1 : <?php
2 : /**
3 : * Smarty Internal Plugin Templateparser
4 : *
5 : * This is the template parser.
6 : * It is generated from the internal.templateparser.y file
7 : * @package Smarty
8 : * @subpackage Compiler
9 : * @author Uwe Tews
10 : */
11 :
12 : /**
13 : * This can be used to store both the string representation of
14 : * a token, and any useful meta-data associated with the token.
15 : *
16 : * meta-data should be stored as an array
17 : */
18 1 : class TP_yyToken implements ArrayAccess
19 : {
20 : public $string = '';
21 : public $metadata = array();
22 :
23 : function __construct($s, $m = array())
24 : {
25 0 : if ($s instanceof TP_yyToken) {
26 0 : $this->string = $s->string;
27 0 : $this->metadata = $s->metadata;
28 0 : } else {
29 0 : $this->string = (string) $s;
30 0 : if ($m instanceof TP_yyToken) {
31 0 : $this->metadata = $m->metadata;
32 0 : } elseif (is_array($m)) {
33 0 : $this->metadata = $m;
34 0 : }
35 : }
36 0 : }
37 :
38 : function __toString()
39 : {
40 0 : return $this->_string;
41 : }
42 :
43 : function offsetExists($offset)
44 : {
45 0 : return isset($this->metadata[$offset]);
46 : }
47 :
48 : function offsetGet($offset)
49 : {
50 0 : return $this->metadata[$offset];
51 : }
52 :
53 : function offsetSet($offset, $value)
54 : {
55 0 : if ($offset === null) {
56 0 : if (isset($value[0])) {
57 0 : $x = ($value instanceof TP_yyToken) ?
58 0 : $value->metadata : $value;
59 0 : $this->metadata = array_merge($this->metadata, $x);
60 0 : return;
61 : }
62 0 : $offset = count($this->metadata);
63 0 : }
64 0 : if ($value === null) {
65 0 : return;
66 : }
67 0 : if ($value instanceof TP_yyToken) {
68 0 : if ($value->metadata) {
69 0 : $this->metadata[$offset] = $value->metadata;
70 0 : }
71 0 : } elseif ($value) {
72 0 : $this->metadata[$offset] = $value;
73 0 : }
74 0 : }
75 :
76 : function offsetUnset($offset)
77 : {
78 0 : unset($this->metadata[$offset]);
79 0 : }
80 : }
81 :
82 : /** The following structure represents a single element of the
83 : * parser's stack. Information stored includes:
84 : *
85 : * + The state number for the parser at this level of the stack.
86 : *
87 : * + The value of the token stored at this level of the stack.
88 : * (In other words, the "major" token.)
89 : *
90 : * + The semantic value stored at this level of the stack. This is
91 : * the information used by the action routines in the grammar.
92 : * It is sometimes called the "minor" token.
93 : */
94 : class TP_yyStackEntry
95 1 : {
96 : public $stateno; /* The state-number */
97 : public $major; /* The major token value. This is the code
98 : ** number for the token at this stack level */
99 : public $minor; /* The user-supplied minor token value. This
100 : ** is the value of the token */
101 : };
102 :
103 : // code external to the class is included here
104 :
105 : // declare_class is output here
106 : #line 12 "smarty_internal_templateparser.y"
107 : class Smarty_Internal_Templateparser#line 109 "smarty_internal_templateparser.php"
108 1 : {
109 : /* First off, code is included which follows the "include_class" declaration
110 : ** in the input file. */
111 : #line 14 "smarty_internal_templateparser.y"
112 :
113 : // states whether the parse was successful or not
114 : public $successful = true;
115 : public $retvalue = 0;
116 : private $lex;
117 : private $internalError = false;
118 :
119 : function __construct($lex, $compiler) {
120 : // set instance object
121 388 : self::instance($this);
122 388 : $this->lex = $lex;
123 388 : $this->compiler = $compiler;
124 388 : $this->smarty = $this->compiler->smarty;
125 388 : $this->template = $this->compiler->template;
126 388 : if ($this->template->security && isset($this->smarty->security_handler)) {
127 380 : $this->sec_obj = $this->smarty->security_policy;
128 380 : } else {
129 10 : $this->sec_obj = $this->smarty;
130 : }
131 388 : $this->cacher = $this->template->cacher_object;
132 388 : $this->compiler->has_variable_string = false;
133 388 : $this->compiler->prefix_code = array();
134 388 : $this->prefix_number = 0;
135 388 : }
136 : public static function &instance($new_instance = null)
137 : {
138 388 : static $instance = null;
139 388 : if (isset($new_instance) && is_object($new_instance))
140 388 : $instance = $new_instance;
141 388 : return $instance;
142 : }
143 :
144 : #line 147 "smarty_internal_templateparser.php"
145 :
146 : /* Next is all token values, as class constants
147 : */
148 : /*
149 : ** These constants (all generated automatically by the parser generator)
150 : ** specify the various kinds of tokens (terminals) that the parser
151 : ** understands.
152 : **
153 : ** Each symbol here is a terminal symbol in the grammar.
154 : */
155 : const TP_OTHER = 1;
156 : const TP_XML = 2;
157 : const TP_PHP = 3;
158 : const TP_SHORTTAGSTART = 4;
159 : const TP_SHORTTAGEND = 5;
160 : const TP_PHPSTART = 6;
161 : const TP_PHPEND = 7;
162 : const TP_COMMENT = 8;
163 : const TP_SINGLEQUOTE = 9;
164 : const TP_LITERALSTART = 10;
165 : const TP_LITERALEND = 11;
166 : const TP_LDELIMTAG = 12;
167 : const TP_RDELIMTAG = 13;
168 : const TP_LDELSLASH = 14;
169 : const TP_LDEL = 15;
170 : const TP_RDEL = 16;
171 : const TP_ISIN = 17;
172 : const TP_AS = 18;
173 : const TP_BOOLEAN = 19;
174 : const TP_NULL = 20;
175 : const TP_IDENTITY = 21;
176 : const TP_NONEIDENTITY = 22;
177 : const TP_EQUALS = 23;
178 : const TP_NOTEQUALS = 24;
179 : const TP_GREATEREQUAL = 25;
180 : const TP_LESSEQUAL = 26;
181 : const TP_GREATERTHAN = 27;
182 : const TP_LESSTHAN = 28;
183 : const TP_NOT = 29;
184 : const TP_LAND = 30;
185 : const TP_LOR = 31;
186 : const TP_LXOR = 32;
187 : const TP_ISODDBY = 33;
188 : const TP_ISNOTODDBY = 34;
189 : const TP_ISODD = 35;
190 : const TP_ISNOTODD = 36;
191 : const TP_ISEVENBY = 37;
192 : const TP_ISNOTEVENBY = 38;
193 : const TP_ISEVEN = 39;
194 : const TP_ISNOTEVEN = 40;
195 : const TP_ISDIVBY = 41;
196 : const TP_ISNOTDIVBY = 42;
197 : const TP_OPENP = 43;
198 : const TP_CLOSEP = 44;
199 : const TP_OPENB = 45;
200 : const TP_CLOSEB = 46;
201 : const TP_PTR = 47;
202 : const TP_APTR = 48;
203 : const TP_EQUAL = 49;
204 : const TP_INTEGER = 50;
205 : const TP_INCDEC = 51;
206 : const TP_UNIMATH = 52;
207 : const TP_MATH = 53;
208 : const TP_DOLLAR = 54;
209 : const TP_COLON = 55;
210 : const TP_DOUBLECOLON = 56;
211 : const TP_SEMICOLON = 57;
212 : const TP_AT = 58;
213 : const TP_HATCH = 59;
214 : const TP_QUOTE = 60;
215 : const TP_BACKTICK = 61;
216 : const TP_VERT = 62;
217 : const TP_DOT = 63;
218 : const TP_COMMA = 64;
219 : const TP_ANDSYM = 65;
220 : const TP_ID = 66;
221 : const TP_SPACE = 67;
222 : const TP_INSTANCEOF = 68;
223 : const TP_QMARK = 69;
224 : const YY_NO_ACTION = 478;
225 : const YY_ACCEPT_ACTION = 477;
226 : const YY_ERROR_ACTION = 476;
227 :
228 : /* Next are that tables used to determine what action to take based on the
229 : ** current state and lookahead token. These tables are used to implement
230 : ** functions that take a state number and lookahead value and return an
231 : ** action integer.
232 : **
233 : ** Suppose the action integer is N. Then the action is determined as
234 : ** follows
235 : **
236 : ** 0 <= N < self::YYNSTATE Shift N. That is,
237 : ** push the lookahead
238 : ** token onto the stack
239 : ** and goto state N.
240 : **
241 : ** self::YYNSTATE <= N < self::YYNSTATE+self::YYNRULE Reduce by rule N-YYNSTATE.
242 : **
243 : ** N == self::YYNSTATE+self::YYNRULE A syntax error has occurred.
244 : **
245 : ** N == self::YYNSTATE+self::YYNRULE+1 The parser accepts its
246 : ** input. (and concludes parsing)
247 : **
248 : ** N == self::YYNSTATE+self::YYNRULE+2 No such action. Denotes unused
249 : ** slots in the yy_action[] table.
250 : **
251 : ** The action table is constructed as a single large static array $yy_action.
252 : ** Given state S and lookahead X, the action is computed as
253 : **
254 : ** self::$yy_action[self::$yy_shift_ofst[S] + X ]
255 : **
256 : ** If the index value self::$yy_shift_ofst[S]+X is out of range or if the value
257 : ** self::$yy_lookahead[self::$yy_shift_ofst[S]+X] is not equal to X or if
258 : ** self::$yy_shift_ofst[S] is equal to self::YY_SHIFT_USE_DFLT, it means that
259 : ** the action is not in the table and that self::$yy_default[S] should be used instead.
260 : **
261 : ** The formula above is for computing the action when the lookahead is
262 : ** a terminal symbol. If the lookahead is a non-terminal (as occurs after
263 : ** a reduce action) then the static $yy_reduce_ofst array is used in place of
264 : ** the static $yy_shift_ofst array and self::YY_REDUCE_USE_DFLT is used in place of
265 : ** self::YY_SHIFT_USE_DFLT.
266 : **
267 : ** The following are the tables generated in this section:
268 : **
269 : ** self::$yy_action A single table containing all actions.
270 : ** self::$yy_lookahead A table containing the lookahead for each entry in
271 : ** yy_action. Used to detect hash collisions.
272 : ** self::$yy_shift_ofst For each state, the offset into self::$yy_action for
273 : ** shifting terminals.
274 : ** self::$yy_reduce_ofst For each state, the offset into self::$yy_action for
275 : ** shifting non-terminals after a reduce.
276 : ** self::$yy_default Default action for each state.
277 : */
278 : const YY_SZ_ACTTAB = 996;
279 : static public $yy_action = array(
280 : /* 0 */ 222, 220, 247, 9, 3, 208, 215, 7, 4, 254,
281 : /* 10 */ 249, 10, 12, 182, 222, 220, 247, 9, 3, 208,
282 : /* 20 */ 215, 7, 4, 254, 249, 10, 12, 201, 291, 222,
283 : /* 30 */ 220, 247, 9, 3, 208, 215, 7, 4, 254, 249,
284 : /* 40 */ 10, 12, 43, 171, 149, 222, 220, 247, 9, 3,
285 : /* 50 */ 208, 215, 7, 4, 254, 249, 10, 12, 63, 111,
286 : /* 60 */ 144, 63, 277, 217, 64, 223, 134, 64, 207, 213,
287 : /* 70 */ 152, 207, 213, 239, 241, 184, 186, 240, 8, 259,
288 : /* 80 */ 252, 150, 73, 125, 235, 234, 124, 2, 69, 26,
289 : /* 90 */ 163, 24, 11, 49, 14, 33, 259, 14, 285, 196,
290 : /* 100 */ 197, 41, 196, 72, 41, 302, 69, 263, 49, 58,
291 : /* 110 */ 226, 49, 58, 63, 295, 161, 63, 19, 154, 64,
292 : /* 120 */ 279, 280, 64, 207, 213, 23, 207, 213, 195, 150,
293 : /* 130 */ 104, 18, 77, 276, 179, 24, 8, 36, 174, 43,
294 : /* 140 */ 210, 293, 272, 100, 106, 229, 199, 33, 190, 14,
295 : /* 150 */ 11, 219, 14, 31, 196, 45, 41, 196, 72, 41,
296 : /* 160 */ 69, 65, 266, 49, 58, 49, 49, 58, 63, 23,
297 : /* 170 */ 44, 63, 166, 153, 64, 102, 25, 64, 207, 213,
298 : /* 180 */ 21, 207, 213, 170, 18, 39, 272, 77, 204, 251,
299 : /* 190 */ 233, 225, 205, 248, 246, 211, 255, 106, 477, 94,
300 : /* 200 */ 238, 299, 33, 163, 14, 6, 219, 14, 1, 196,
301 : /* 210 */ 283, 41, 196, 72, 41, 69, 72, 163, 49, 58,
302 : /* 220 */ 49, 49, 58, 63, 95, 161, 63, 117, 161, 64,
303 : /* 230 */ 163, 195, 64, 207, 213, 77, 207, 213, 195, 306,
304 : /* 240 */ 104, 244, 77, 210, 293, 24, 98, 163, 229, 35,
305 : /* 250 */ 210, 293, 177, 100, 219, 229, 77, 33, 203, 14,
306 : /* 260 */ 33, 219, 14, 163, 196, 139, 41, 196, 69, 41,
307 : /* 270 */ 223, 72, 143, 49, 58, 219, 49, 58, 63, 60,
308 : /* 280 */ 162, 63, 24, 155, 64, 259, 195, 64, 207, 213,
309 : /* 290 */ 77, 207, 213, 195, 274, 104, 168, 77, 210, 293,
310 : /* 300 */ 36, 96, 163, 229, 17, 210, 293, 127, 100, 219,
311 : /* 310 */ 229, 147, 33, 176, 14, 6, 219, 14, 45, 196,
312 : /* 320 */ 259, 41, 196, 69, 41, 179, 72, 61, 49, 58,
313 : /* 330 */ 290, 49, 58, 272, 77, 157, 304, 169, 44, 195,
314 : /* 340 */ 305, 57, 274, 77, 288, 24, 88, 200, 156, 63,
315 : /* 350 */ 300, 158, 172, 219, 100, 64, 229, 105, 163, 207,
316 : /* 360 */ 213, 122, 219, 182, 39, 279, 280, 297, 251, 233,
317 : /* 370 */ 225, 205, 248, 246, 211, 255, 279, 280, 276, 34,
318 : /* 380 */ 195, 281, 148, 33, 77, 14, 77, 40, 304, 276,
319 : /* 390 */ 196, 236, 210, 293, 69, 97, 272, 229, 242, 49,
320 : /* 400 */ 58, 228, 300, 219, 53, 219, 162, 260, 39, 163,
321 : /* 410 */ 110, 67, 251, 233, 225, 205, 248, 246, 211, 255,
322 : /* 420 */ 18, 277, 183, 50, 181, 32, 62, 24, 54, 76,
323 : /* 430 */ 66, 119, 101, 106, 63, 175, 63, 304, 210, 293,
324 : /* 440 */ 64, 100, 64, 229, 207, 213, 207, 213, 195, 219,
325 : /* 450 */ 57, 300, 77, 163, 180, 87, 347, 5, 304, 51,
326 : /* 460 */ 202, 293, 236, 100, 130, 229, 301, 283, 33, 163,
327 : /* 470 */ 33, 219, 300, 257, 182, 196, 297, 196, 272, 69,
328 : /* 480 */ 163, 69, 204, 18, 49, 58, 49, 58, 195, 22,
329 : /* 490 */ 57, 162, 77, 159, 37, 89, 106, 163, 218, 273,
330 : /* 500 */ 202, 293, 1, 100, 113, 229, 182, 347, 195, 178,
331 : /* 510 */ 57, 219, 77, 344, 19, 84, 297, 278, 191, 274,
332 : /* 520 */ 202, 293, 195, 100, 57, 229, 77, 132, 136, 90,
333 : /* 530 */ 193, 219, 150, 145, 202, 293, 297, 100, 258, 229,
334 : /* 540 */ 195, 259, 57, 206, 77, 219, 259, 86, 214, 128,
335 : /* 550 */ 297, 79, 202, 293, 195, 100, 57, 229, 77, 224,
336 : /* 560 */ 231, 91, 259, 219, 182, 116, 202, 293, 297, 100,
337 : /* 570 */ 230, 229, 195, 99, 56, 224, 77, 219, 18, 82,
338 : /* 580 */ 274, 287, 297, 275, 202, 293, 68, 100, 274, 229,
339 : /* 590 */ 195, 106, 57, 22, 77, 219, 129, 93, 165, 59,
340 : /* 600 */ 297, 274, 202, 293, 195, 100, 57, 229, 77, 259,
341 : /* 610 */ 43, 85, 16, 219, 274, 27, 202, 293, 297, 100,
342 : /* 620 */ 141, 229, 163, 214, 195, 223, 57, 219, 77, 163,
343 : /* 630 */ 133, 92, 297, 194, 150, 135, 202, 293, 29, 100,
344 : /* 640 */ 262, 229, 195, 259, 55, 163, 77, 219, 259, 83,
345 : /* 650 */ 40, 75, 297, 80, 202, 293, 195, 100, 120, 229,
346 : /* 660 */ 77, 142, 151, 195, 333, 219, 223, 77, 210, 293,
347 : /* 670 */ 297, 100, 38, 229, 308, 216, 227, 198, 298, 219,
348 : /* 680 */ 229, 195, 16, 108, 185, 66, 219, 160, 286, 237,
349 : /* 690 */ 28, 173, 74, 210, 293, 292, 100, 195, 229, 126,
350 : /* 700 */ 212, 77, 267, 71, 219, 284, 192, 294, 163, 210,
351 : /* 710 */ 293, 69, 100, 261, 229, 195, 49, 52, 78, 77,
352 : /* 720 */ 219, 30, 250, 256, 187, 245, 253, 210, 293, 221,
353 : /* 730 */ 100, 195, 229, 120, 270, 77, 268, 167, 219, 81,
354 : /* 740 */ 189, 217, 296, 210, 293, 115, 100, 195, 229, 104,
355 : /* 750 */ 42, 77, 13, 277, 219, 243, 271, 20, 265, 210,
356 : /* 760 */ 293, 47, 100, 264, 229, 195, 188, 269, 48, 77,
357 : /* 770 */ 219, 70, 195, 37, 121, 282, 77, 289, 282, 195,
358 : /* 780 */ 282, 118, 229, 77, 210, 293, 224, 100, 219, 229,
359 : /* 790 */ 282, 210, 293, 282, 100, 219, 229, 195, 282, 107,
360 : /* 800 */ 282, 77, 219, 282, 282, 282, 282, 282, 282, 210,
361 : /* 810 */ 293, 195, 100, 138, 229, 77, 282, 282, 282, 282,
362 : /* 820 */ 219, 282, 282, 210, 293, 195, 100, 146, 229, 77,
363 : /* 830 */ 282, 282, 282, 282, 219, 282, 282, 210, 293, 195,
364 : /* 840 */ 100, 112, 229, 77, 282, 282, 282, 282, 219, 282,
365 : /* 850 */ 303, 210, 293, 195, 100, 114, 229, 77, 282, 282,
366 : /* 860 */ 282, 282, 219, 282, 15, 210, 293, 282, 100, 282,
367 : /* 870 */ 229, 195, 282, 123, 282, 77, 219, 282, 195, 282,
368 : /* 880 */ 140, 282, 77, 210, 293, 282, 100, 282, 229, 282,
369 : /* 890 */ 210, 293, 282, 100, 219, 229, 282, 282, 282, 282,
370 : /* 900 */ 282, 219, 195, 164, 131, 282, 77, 282, 282, 307,
371 : /* 910 */ 46, 282, 282, 282, 210, 293, 195, 100, 103, 229,
372 : /* 920 */ 77, 282, 282, 282, 282, 219, 282, 282, 210, 293,
373 : /* 930 */ 195, 100, 109, 229, 77, 303, 282, 282, 282, 219,
374 : /* 940 */ 282, 282, 210, 293, 195, 100, 137, 229, 77, 15,
375 : /* 950 */ 282, 282, 282, 219, 195, 282, 210, 293, 77, 100,
376 : /* 960 */ 282, 229, 282, 282, 282, 282, 209, 219, 282, 195,
377 : /* 970 */ 282, 229, 282, 77, 282, 282, 282, 219, 282, 282,
378 : /* 980 */ 282, 232, 282, 282, 282, 282, 229, 282, 164, 282,
379 : /* 990 */ 282, 282, 219, 282, 282, 46,
380 : );
381 : static public $yy_lookahead = array(
382 : /* 0 */ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
383 : /* 10 */ 40, 41, 42, 67, 30, 31, 32, 33, 34, 35,
384 : /* 20 */ 36, 37, 38, 39, 40, 41, 42, 57, 44, 30,
385 : /* 30 */ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
386 : /* 40 */ 41, 42, 47, 44, 16, 30, 31, 32, 33, 34,
387 : /* 50 */ 35, 36, 37, 38, 39, 40, 41, 42, 9, 100,
388 : /* 60 */ 99, 9, 103, 102, 15, 104, 79, 15, 19, 20,
389 : /* 70 */ 83, 19, 20, 1, 2, 3, 4, 5, 29, 92,
390 : /* 80 */ 8, 83, 10, 79, 12, 13, 14, 15, 54, 15,
391 : /* 90 */ 62, 15, 43, 59, 45, 43, 92, 45, 46, 50,
392 : /* 100 */ 66, 52, 50, 54, 52, 1, 54, 1, 59, 60,
393 : /* 110 */ 104, 59, 60, 9, 46, 66, 9, 43, 66, 15,
394 : /* 120 */ 52, 53, 15, 19, 20, 49, 19, 20, 78, 83,
395 : /* 130 */ 80, 43, 82, 65, 58, 15, 29, 45, 74, 47,
396 : /* 140 */ 90, 91, 66, 93, 56, 95, 82, 43, 98, 45,
397 : /* 150 */ 43, 101, 45, 107, 50, 63, 52, 50, 54, 52,
398 : /* 160 */ 54, 54, 46, 59, 60, 59, 59, 60, 9, 49,
399 : /* 170 */ 66, 9, 66, 66, 15, 77, 15, 15, 19, 20,
400 : /* 180 */ 64, 19, 20, 78, 43, 17, 66, 82, 47, 21,
401 : /* 190 */ 22, 23, 24, 25, 26, 27, 28, 56, 71, 72,
402 : /* 200 */ 73, 16, 43, 62, 45, 43, 101, 45, 67, 50,
403 : /* 210 */ 112, 52, 50, 54, 52, 54, 54, 62, 59, 60,
404 : /* 220 */ 59, 59, 60, 9, 96, 66, 9, 66, 66, 15,
405 : /* 230 */ 62, 78, 15, 19, 20, 82, 19, 20, 78, 111,
406 : /* 240 */ 80, 92, 82, 90, 91, 15, 93, 62, 95, 48,
407 : /* 250 */ 90, 91, 78, 93, 101, 95, 82, 43, 98, 45,
408 : /* 260 */ 43, 101, 45, 62, 50, 99, 52, 50, 54, 52,
409 : /* 270 */ 104, 54, 79, 59, 60, 101, 59, 60, 9, 88,
410 : /* 280 */ 66, 9, 15, 66, 15, 92, 78, 15, 19, 20,
411 : /* 290 */ 82, 19, 20, 78, 103, 80, 66, 82, 90, 91,
412 : /* 300 */ 45, 93, 62, 95, 64, 90, 91, 79, 93, 101,
413 : /* 310 */ 95, 83, 43, 98, 45, 43, 101, 45, 63, 50,
414 : /* 320 */ 92, 52, 50, 54, 52, 58, 54, 88, 59, 60,
415 : /* 330 */ 78, 59, 60, 66, 82, 66, 1, 18, 66, 78,
416 : /* 340 */ 16, 80, 103, 82, 9, 15, 85, 86, 87, 9,
417 : /* 350 */ 15, 90, 91, 101, 93, 15, 95, 100, 62, 19,
418 : /* 360 */ 20, 84, 101, 67, 17, 52, 53, 106, 21, 22,
419 : /* 370 */ 23, 24, 25, 26, 27, 28, 52, 53, 65, 49,
420 : /* 380 */ 78, 51, 78, 43, 82, 45, 82, 68, 1, 65,
421 : /* 390 */ 50, 44, 90, 91, 54, 93, 66, 95, 11, 59,
422 : /* 400 */ 60, 97, 15, 101, 84, 101, 66, 89, 17, 62,
423 : /* 410 */ 100, 54, 21, 22, 23, 24, 25, 26, 27, 28,
424 : /* 420 */ 43, 103, 74, 66, 76, 48, 78, 15, 80, 81,
425 : /* 430 */ 82, 100, 77, 56, 9, 44, 9, 1, 90, 91,
426 : /* 440 */ 15, 93, 15, 95, 19, 20, 19, 20, 78, 101,
427 : /* 450 */ 80, 15, 82, 62, 47, 85, 16, 57, 1, 84,
428 : /* 460 */ 90, 91, 44, 93, 64, 95, 9, 112, 43, 62,
429 : /* 470 */ 43, 101, 15, 1, 67, 50, 106, 50, 66, 54,
430 : /* 480 */ 62, 54, 47, 43, 59, 60, 59, 60, 78, 49,
431 : /* 490 */ 80, 66, 82, 66, 55, 85, 56, 62, 66, 66,
432 : /* 500 */ 90, 91, 67, 93, 88, 95, 67, 67, 78, 58,
433 : /* 510 */ 80, 101, 82, 16, 43, 85, 106, 66, 54, 103,
434 : /* 520 */ 90, 91, 78, 93, 80, 95, 82, 66, 79, 85,
435 : /* 530 */ 66, 101, 83, 79, 90, 91, 106, 93, 66, 95,
436 : /* 540 */ 78, 92, 80, 50, 82, 101, 92, 85, 51, 79,
437 : /* 550 */ 106, 44, 90, 91, 78, 93, 80, 95, 82, 105,
438 : /* 560 */ 5, 85, 92, 101, 67, 88, 90, 91, 106, 93,
439 : /* 570 */ 16, 95, 78, 88, 80, 105, 82, 101, 43, 85,
440 : /* 580 */ 103, 46, 106, 16, 90, 91, 88, 93, 103, 95,
441 : /* 590 */ 78, 56, 80, 49, 82, 101, 79, 85, 63, 88,
442 : /* 600 */ 106, 103, 90, 91, 78, 93, 80, 95, 82, 92,
443 : /* 610 */ 47, 85, 49, 101, 103, 55, 90, 91, 106, 93,
444 : /* 620 */ 99, 95, 62, 51, 78, 104, 80, 101, 82, 62,
445 : /* 630 */ 79, 85, 106, 63, 83, 79, 90, 91, 55, 93,
446 : /* 640 */ 44, 95, 78, 92, 80, 62, 82, 101, 92, 85,
447 : /* 650 */ 68, 54, 106, 66, 90, 91, 78, 93, 80, 95,
448 : /* 660 */ 82, 99, 16, 78, 16, 101, 104, 82, 90, 91,
449 : /* 670 */ 106, 93, 15, 95, 59, 90, 91, 74, 16, 101,
450 : /* 680 */ 95, 78, 49, 80, 1, 82, 101, 109, 110, 5,
451 : /* 690 */ 69, 18, 54, 90, 91, 59, 93, 78, 95, 80,
452 : /* 700 */ 81, 82, 61, 54, 101, 46, 55, 50, 62, 90,
453 : /* 710 */ 91, 54, 93, 16, 95, 78, 59, 80, 81, 82,
454 : /* 720 */ 101, 69, 16, 66, 1, 16, 66, 90, 91, 44,
455 : /* 730 */ 93, 78, 95, 80, 66, 82, 61, 66, 101, 97,
456 : /* 740 */ 66, 102, 112, 90, 91, 100, 93, 78, 95, 80,
457 : /* 750 */ 94, 82, 108, 103, 101, 73, 86, 43, 111, 90,
458 : /* 760 */ 91, 100, 93, 110, 95, 78, 75, 98, 66, 82,
459 : /* 770 */ 101, 54, 78, 55, 80, 113, 82, 90, 113, 78,
460 : /* 780 */ 113, 80, 95, 82, 90, 91, 105, 93, 101, 95,
461 : /* 790 */ 113, 90, 91, 113, 93, 101, 95, 78, 113, 80,
462 : /* 800 */ 113, 82, 101, 113, 113, 113, 113, 113, 113, 90,
463 : /* 810 */ 91, 78, 93, 80, 95, 82, 113, 113, 113, 113,
464 : /* 820 */ 101, 113, 113, 90, 91, 78, 93, 80, 95, 82,
465 : /* 830 */ 113, 113, 113, 113, 101, 113, 113, 90, 91, 78,
466 : /* 840 */ 93, 80, 95, 82, 113, 113, 113, 113, 101, 113,
467 : /* 850 */ 1, 90, 91, 78, 93, 80, 95, 82, 113, 113,
468 : /* 860 */ 113, 113, 101, 113, 15, 90, 91, 113, 93, 113,
469 : /* 870 */ 95, 78, 113, 80, 113, 82, 101, 113, 78, 113,
470 : /* 880 */ 80, 113, 82, 90, 91, 113, 93, 113, 95, 113,
471 : /* 890 */ 90, 91, 113, 93, 101, 95, 113, 113, 113, 113,
472 : /* 900 */ 113, 101, 78, 54, 80, 113, 82, 113, 113, 60,
473 : /* 910 */ 61, 113, 113, 113, 90, 91, 78, 93, 80, 95,
474 : /* 920 */ 82, 113, 113, 113, 113, 101, 113, 113, 90, 91,
475 : /* 930 */ 78, 93, 80, 95, 82, 1, 113, 113, 113, 101,
476 : /* 940 */ 113, 113, 90, 91, 78, 93, 80, 95, 82, 15,
477 : /* 950 */ 113, 113, 113, 101, 78, 113, 90, 91, 82, 93,
478 : /* 960 */ 113, 95, 113, 113, 113, 113, 90, 101, 113, 78,
479 : /* 970 */ 113, 95, 113, 82, 113, 113, 113, 101, 113, 113,
480 : /* 980 */ 113, 90, 113, 113, 113, 113, 95, 113, 54, 113,
481 : /* 990 */ 113, 113, 101, 113, 60, 61,
482 : );
483 : const YY_SHIFT_USE_DFLT = -55;
484 : const YY_SHIFT_MAX = 204;
485 : static public $yy_shift_ofst = array(
486 : /* 0 */ 72, 107, 272, 49, 49, 49, 49, 49, 49, 49,
487 : /* 10 */ 49, 49, 49, 49, 217, 104, 162, 159, 159, 159,
488 : /* 20 */ 159, 217, 162, 159, 159, 159, 159, 159, 159, 159,
489 : /* 30 */ 159, 159, 159, 159, 159, 159, 52, 269, 214, 340,
490 : /* 40 */ 427, 425, 425, 161, 141, 657, 106, 92, 407, 34,
491 : /* 50 */ 435, 439, 296, 439, 296, 347, 391, 168, 849, 330,
492 : /* 60 */ 76, 267, 497, 457, 357, 230, 563, 412, 412, 412,
493 : /* 70 */ 412, 412, 230, 436, 412, 412, -54, -5, -54, -5,
494 : /* 80 */ -54, -5, -1, -16, -30, 15, 15, 15, 15, 15,
495 : /* 90 */ 15, 15, 15, 15, 72, 934, 324, 68, 313, 120,
496 : /* 100 */ 313, 387, 335, 418, 240, 255, 464, 560, 185, 28,
497 : /* 110 */ 255, 255, 583, 412, 567, 255, 412, 74, 646, 255,
498 : /* 120 */ 201, 155, 718, 155, 702, -54, 155, -54, -54, -54,
499 : /* 130 */ 717, 155, 714, -54, -54, -54, -54, 155, 155, -5,
500 : /* 140 */ 155, -5, -5, -54, -5, -54, 155, -55, -55, -55,
501 : /* 150 */ -55, -55, -55, 440, 535, 377, 400, 88, 319, 88,
502 : /* 160 */ 116, 88, 88, 451, 472, 671, 641, 659, 651, 649,
503 : /* 170 */ 636, 621, 673, 638, 697, 652, 685, 675, 668, 432,
504 : /* 180 */ 660, 709, 674, 706, 723, 684, 683, 555, 554, 544,
505 : /* 190 */ 507, 461, 433, 471, 493, 572, 570, 615, 662, 633,
506 : /* 200 */ 648, 597, 582, 596, 587,
507 : );
508 : const YY_REDUCE_USE_DFLT = -42;
509 : const YY_REDUCE_MAX = 152;
510 : static public $yy_reduce_ofst = array(
511 : /* 0 */ 127, 261, 348, 462, 444, 430, 494, 526, 410, 512,
512 : /* 10 */ 546, 564, 370, 476, 578, 603, 637, 669, 160, 215,
513 : /* 20 */ 50, 653, 619, 824, 775, 701, 852, 866, 719, 733,
514 : /* 30 */ 761, 747, 793, 838, 800, 694, 302, 153, 208, 585,
515 : /* 40 */ 891, 876, 687, 304, -13, 252, 174, -39, 228, 105,
516 : /* 50 */ -13, 454, 449, 470, 551, 46, 46, 46, 128, 318,
517 : /* 60 */ -41, -41, 4, 98, 64, 191, 166, 498, -41, 239,
518 : /* 70 */ 485, 416, 239, 355, 477, 511, 517, 166, 556, 562,
519 : /* 80 */ 193, 521, 644, 644, 644, 644, 644, 644, 644, 644,
520 : /* 90 */ 644, 644, 644, 644, 682, 647, 656, 656, 656, 650,
521 : /* 100 */ 656, 630, 630, -2, -2, 639, 642, -2, -2, -2,
522 : /* 110 */ 639, 639, -2, 650, -2, 639, 650, 645, -2, 639,
523 : /* 120 */ -2, -2, 681, -2, 691, 149, -2, 149, 149, 149,
524 : /* 130 */ 670, -2, 661, 149, 149, 149, 149, -2, -2, 6,
525 : /* 140 */ -2, 6, 6, 149, 6, 149, -2, 320, 257, 310,
526 : /* 150 */ 277, 331, 375,
527 : );
528 : static public $yyExpectedTokens = array(
529 : /* 0 */ array(1, 2, 3, 4, 5, 8, 10, 12, 13, 14, 15, ),
530 : /* 1 */ array(9, 15, 19, 20, 29, 43, 45, 50, 52, 54, 59, 60, 66, ),
531 : /* 2 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
532 : /* 3 */ array(9, 15, 19, 20, 29, 43, 45, 50, 52, 54, 59, 60, 66, ),
533 : /* 4 */ array(9, 15, 19, 20, 29, 43, 45, 50, 52, 54, 59, 60, 66, ),
534 : /* 5 */ array(9, 15, 19, 20, 29, 43, 45, 50, 52, 54, 59, 60, 66, ),
535 : /* 6 */ array(9, 15, 19, 20, 29, 43, 45, 50, 52, 54, 59, 60, 66, ),
536 : /* 7 */ array(9, 15, 19, 20, 29, 43, 45, 50, 52, 54, 59, 60, 66, ),
537 : /* 8 */ array(9, 15, 19, 20, 29, 43, 45, 50, 52, 54, 59, 60, 66, ),
538 : /* 9 */ array(9, 15, 19, 20, 29, 43, 45, 50, 52, 54, 59, 60, 66, ),
539 : /* 10 */ array(9, 15, 19, 20, 29, 43, 45, 50, 52, 54, 59, 60, 66, ),
540 : /* 11 */ array(9, 15, 19, 20, 29, 43, 45, 50, 52, 54, 59, 60, 66, ),
541 : /* 12 */ array(9, 15, 19, 20, 29, 43, 45, 50, 52, 54, 59, 60, 66, ),
542 : /* 13 */ array(9, 15, 19, 20, 29, 43, 45, 50, 52, 54, 59, 60, 66, ),
543 : /* 14 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
544 : /* 15 */ array(1, 9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
545 : /* 16 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
546 : /* 17 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
547 : /* 18 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
548 : /* 19 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
549 : /* 20 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
550 : /* 21 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
551 : /* 22 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
552 : /* 23 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
553 : /* 24 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
554 : /* 25 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
555 : /* 26 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
556 : /* 27 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
557 : /* 28 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
558 : /* 29 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
559 : /* 30 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
560 : /* 31 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
561 : /* 32 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
562 : /* 33 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
563 : /* 34 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
564 : /* 35 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
565 : /* 36 */ array(9, 15, 19, 20, 43, 45, 46, 50, 52, 54, 59, 60, 66, ),
566 : /* 37 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
567 : /* 38 */ array(9, 15, 19, 20, 43, 45, 50, 52, 54, 59, 60, 66, ),
568 : /* 39 */ array(9, 15, 19, 20, 43, 45, 50, 54, 59, 60, 66, ),
569 : /* 40 */ array(9, 15, 19, 20, 43, 50, 54, 59, 60, 66, ),
570 : /* 41 */ array(9, 15, 19, 20, 43, 50, 54, 59, 60, 66, ),
571 : /* 42 */ array(9, 15, 19, 20, 43, 50, 54, 59, 60, 66, ),
572 : /* 43 */ array(15, 54, 59, 66, ),
573 : /* 44 */ array(43, 47, 56, 62, 67, ),
574 : /* 45 */ array(15, 50, 54, 59, 66, ),
575 : /* 46 */ array(1, 54, 59, 66, ),
576 : /* 47 */ array(45, 47, 63, ),
577 : /* 48 */ array(47, 62, 67, ),
578 : /* 49 */ array(54, 59, 66, ),
579 : /* 50 */ array(47, 62, 67, ),
580 : /* 51 */ array(55, 67, ),
581 : /* 52 */ array(62, 67, ),
582 : /* 53 */ array(55, 67, ),
583 : /* 54 */ array(62, 67, ),
584 : /* 55 */ array(17, 21, 22, 23, 24, 25, 26, 27, 28, 44, 62, ),
585 : /* 56 */ array(17, 21, 22, 23, 24, 25, 26, 27, 28, 44, 62, ),
586 : /* 57 */ array(17, 21, 22, 23, 24, 25, 26, 27, 28, 62, ),
587 : /* 58 */ array(1, 15, 54, 60, 61, ),
588 : /* 59 */ array(15, 49, 51, 66, ),
589 : /* 60 */ array(15, 49, 58, 66, ),
590 : /* 61 */ array(15, 58, 66, ),
591 : /* 62 */ array(16, 51, 67, ),
592 : /* 63 */ array(1, 9, 15, ),
593 : /* 64 */ array(54, 66, ),
594 : /* 65 */ array(15, 66, ),
595 : /* 66 */ array(47, 49, ),
596 : /* 67 */ array(15, 66, ),
597 : /* 68 */ array(15, 66, ),
598 : /* 69 */ array(15, 66, ),
599 : /* 70 */ array(15, 66, ),
600 : /* 71 */ array(15, 66, ),
601 : /* 72 */ array(15, 66, ),
602 : /* 73 */ array(1, 15, ),
603 : /* 74 */ array(15, 66, ),
604 : /* 75 */ array(15, 66, ),
605 : /* 76 */ array(67, ),
606 : /* 77 */ array(47, ),
607 : /* 78 */ array(67, ),
608 : /* 79 */ array(47, ),
609 : /* 80 */ array(67, ),
610 : /* 81 */ array(47, ),
611 : /* 82 */ array(30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, ),
612 : /* 83 */ array(30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, ),
613 : /* 84 */ array(30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 57, ),
614 : /* 85 */ array(30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, ),
615 : /* 86 */ array(30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, ),
616 : /* 87 */ array(30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, ),
617 : /* 88 */ array(30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, ),
618 : /* 89 */ array(30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, ),
619 : /* 90 */ array(30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, ),
620 : /* 91 */ array(30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, ),
621 : /* 92 */ array(30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, ),
622 : /* 93 */ array(30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, ),
623 : /* 94 */ array(1, 2, 3, 4, 5, 8, 10, 12, 13, 14, 15, ),
624 : /* 95 */ array(1, 15, 54, 60, 61, ),
625 : /* 96 */ array(16, 52, 53, 65, ),
626 : /* 97 */ array(46, 52, 53, 65, ),
627 : /* 98 */ array(52, 53, 65, ),
628 : /* 99 */ array(15, 49, 66, ),
629 : /* 100 */ array(52, 53, 65, ),
630 : /* 101 */ array(1, 11, 15, ),
631 : /* 102 */ array(1, 9, 15, ),
632 : /* 103 */ array(44, 62, ),
633 : /* 104 */ array(62, 64, ),
634 : /* 105 */ array(45, 63, ),
635 : /* 106 */ array(54, 66, ),
636 : /* 107 */ array(55, 62, ),
637 : /* 108 */ array(16, 62, ),
638 : /* 109 */ array(16, 62, ),
639 : /* 110 */ array(45, 63, ),
640 : /* 111 */ array(45, 63, ),
641 : /* 112 */ array(55, 62, ),
642 : /* 113 */ array(15, 66, ),
643 : /* 114 */ array(16, 62, ),
644 : /* 115 */ array(45, 63, ),
645 : /* 116 */ array(15, 66, ),
646 : /* 117 */ array(15, 43, ),
647 : /* 118 */ array(16, 62, ),
648 : /* 119 */ array(45, 63, ),
649 : /* 120 */ array(48, 62, ),
650 : /* 121 */ array(62, ),
651 : /* 122 */ array(55, ),
652 : /* 123 */ array(62, ),
653 : /* 124 */ array(66, ),
654 : /* 125 */ array(67, ),
655 : /* 126 */ array(62, ),
656 : /* 127 */ array(67, ),
657 : /* 128 */ array(67, ),
658 : /* 129 */ array(67, ),
659 : /* 130 */ array(54, ),
660 : /* 131 */ array(62, ),
661 : /* 132 */ array(43, ),
662 : /* 133 */ array(67, ),
663 : /* 134 */ array(67, ),
664 : /* 135 */ array(67, ),
665 : /* 136 */ array(67, ),
666 : /* 137 */ array(62, ),
667 : /* 138 */ array(62, ),
668 : /* 139 */ array(47, ),
669 : /* 140 */ array(62, ),
670 : /* 141 */ array(47, ),
671 : /* 142 */ array(47, ),
672 : /* 143 */ array(67, ),
673 : /* 144 */ array(47, ),
674 : /* 145 */ array(67, ),
675 : /* 146 */ array(62, ),
676 : /* 147 */ array(),
677 : /* 148 */ array(),
678 : /* 149 */ array(),
679 : /* 150 */ array(),
680 : /* 151 */ array(),
681 : /* 152 */ array(),
682 : /* 153 */ array(16, 43, 49, 56, 67, ),
683 : /* 154 */ array(43, 46, 56, 63, ),
684 : /* 155 */ array(43, 48, 56, ),
685 : /* 156 */ array(57, 64, ),
686 : /* 157 */ array(43, 56, ),
687 : /* 158 */ array(18, 68, ),
688 : /* 159 */ array(43, 56, ),
689 : /* 160 */ array(46, 64, ),
690 : /* 161 */ array(43, 56, ),
691 : /* 162 */ array(43, 56, ),
692 : /* 163 */ array(58, 66, ),
693 : /* 164 */ array(1, 66, ),
694 : /* 165 */ array(66, ),
695 : /* 166 */ array(61, ),
696 : /* 167 */ array(46, ),
697 : /* 168 */ array(55, ),
698 : /* 169 */ array(54, ),
699 : /* 170 */ array(59, ),
700 : /* 171 */ array(69, ),
701 : /* 172 */ array(18, ),
702 : /* 173 */ array(54, ),
703 : /* 174 */ array(16, ),
704 : /* 175 */ array(69, ),
705 : /* 176 */ array(44, ),
706 : /* 177 */ array(61, ),
707 : /* 178 */ array(66, ),
708 : /* 179 */ array(66, ),
709 : /* 180 */ array(66, ),
710 : /* 181 */ array(16, ),
711 : /* 182 */ array(66, ),
712 : /* 183 */ array(16, ),
713 : /* 184 */ array(1, ),
714 : /* 185 */ array(5, ),
715 : /* 186 */ array(1, ),
716 : /* 187 */ array(5, ),
717 : /* 188 */ array(16, ),
718 : /* 189 */ array(49, ),
719 : /* 190 */ array(44, ),
720 : /* 191 */ array(66, ),
721 : /* 192 */ array(66, ),
722 : /* 193 */ array(43, ),
723 : /* 194 */ array(50, ),
724 : /* 195 */ array(51, ),
725 : /* 196 */ array(63, ),
726 : /* 197 */ array(59, ),
727 : /* 198 */ array(16, ),
728 : /* 199 */ array(49, ),
729 : /* 200 */ array(16, ),
730 : /* 201 */ array(54, ),
731 : /* 202 */ array(68, ),
732 : /* 203 */ array(44, ),
733 : /* 204 */ array(66, ),
734 : /* 205 */ array(),
735 : /* 206 */ array(),
736 : /* 207 */ array(),
737 : /* 208 */ array(),
738 : /* 209 */ array(),
739 : /* 210 */ array(),
740 : /* 211 */ array(),
741 : /* 212 */ array(),
742 : /* 213 */ array(),
743 : /* 214 */ array(),
744 : /* 215 */ array(),
745 : /* 216 */ array(),
746 : /* 217 */ array(),
747 : /* 218 */ array(),
748 : /* 219 */ array(),
749 : /* 220 */ array(),
750 : /* 221 */ array(),
751 : /* 222 */ array(),
752 : /* 223 */ array(),
753 : /* 224 */ array(),
754 : /* 225 */ array(),
755 : /* 226 */ array(),
756 : /* 227 */ array(),
757 : /* 228 */ array(),
758 : /* 229 */ array(),
759 : /* 230 */ array(),
760 : /* 231 */ array(),
761 : /* 232 */ array(),
762 : /* 233 */ array(),
763 : /* 234 */ array(),
764 : /* 235 */ array(),
765 : /* 236 */ array(),
766 : /* 237 */ array(),
767 : /* 238 */ array(),
768 : /* 239 */ array(),
769 : /* 240 */ array(),
770 : /* 241 */ array(),
771 : /* 242 */ array(),
772 : /* 243 */ array(),
773 : /* 244 */ array(),
774 : /* 245 */ array(),
775 : /* 246 */ array(),
776 : /* 247 */ array(),
777 : /* 248 */ array(),
778 : /* 249 */ array(),
779 : /* 250 */ array(),
780 : /* 251 */ array(),
781 : /* 252 */ array(),
782 : /* 253 */ array(),
783 : /* 254 */ array(),
784 : /* 255 */ array(),
785 : /* 256 */ array(),
786 : /* 257 */ array(),
787 : /* 258 */ array(),
788 : /* 259 */ array(),
789 : /* 260 */ array(),
790 : /* 261 */ array(),
791 : /* 262 */ array(),
792 : /* 263 */ array(),
793 : /* 264 */ array(),
794 : /* 265 */ array(),
795 : /* 266 */ array(),
796 : /* 267 */ array(),
797 : /* 268 */ array(),
798 : /* 269 */ array(),
799 : /* 270 */ array(),
800 : /* 271 */ array(),
801 : /* 272 */ array(),
802 : /* 273 */ array(),
803 : /* 274 */ array(),
804 : /* 275 */ array(),
805 : /* 276 */ array(),
806 : /* 277 */ array(),
807 : /* 278 */ array(),
808 : /* 279 */ array(),
809 : /* 280 */ array(),
810 : /* 281 */ array(),
811 : /* 282 */ array(),
812 : /* 283 */ array(),
813 : /* 284 */ array(),
814 : /* 285 */ array(),
815 : /* 286 */ array(),
816 : /* 287 */ array(),
817 : /* 288 */ array(),
818 : /* 289 */ array(),
819 : /* 290 */ array(),
820 : /* 291 */ array(),
821 : /* 292 */ array(),
822 : /* 293 */ array(),
823 : /* 294 */ array(),
824 : /* 295 */ array(),
825 : /* 296 */ array(),
826 : /* 297 */ array(),
827 : /* 298 */ array(),
828 : /* 299 */ array(),
829 : /* 300 */ array(),
830 : /* 301 */ array(),
831 : /* 302 */ array(),
832 : /* 303 */ array(),
833 : /* 304 */ array(),
834 : /* 305 */ array(),
835 : /* 306 */ array(),
836 : /* 307 */ array(),
837 : /* 308 */ array(),
838 : );
839 : static public $yy_default = array(
840 : /* 0 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476,
841 : /* 10 */ 476, 476, 476, 476, 457, 476, 476, 416, 416, 416,
842 : /* 20 */ 416, 476, 476, 476, 476, 476, 476, 476, 476, 476,
843 : /* 30 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476,
844 : /* 40 */ 476, 476, 476, 476, 344, 476, 476, 381, 344, 476,
845 : /* 50 */ 344, 344, 344, 344, 344, 426, 426, 426, 476, 476,
846 : /* 60 */ 391, 391, 364, 476, 476, 476, 384, 476, 391, 476,
847 : /* 70 */ 476, 476, 476, 476, 476, 476, 344, 384, 344, 377,
848 : /* 80 */ 344, 376, 476, 476, 476, 435, 440, 432, 332, 424,
849 : /* 90 */ 436, 430, 431, 439, 309, 476, 476, 476, 421, 476,
850 : /* 100 */ 352, 476, 476, 476, 415, 408, 476, 476, 476, 476,
851 : /* 110 */ 410, 389, 476, 337, 476, 407, 338, 391, 476, 409,
852 : /* 120 */ 460, 458, 354, 459, 476, 324, 345, 339, 340, 326,
853 : /* 130 */ 476, 350, 391, 325, 329, 328, 327, 359, 360, 404,
854 : /* 140 */ 335, 378, 379, 330, 382, 331, 427, 420, 391, 391,
855 : /* 150 */ 420, 391, 420, 351, 476, 351, 476, 422, 355, 441,
856 : /* 160 */ 476, 351, 476, 476, 476, 476, 476, 476, 402, 476,
857 : /* 170 */ 476, 476, 358, 476, 476, 371, 476, 476, 476, 476,
858 : /* 180 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 347,
859 : /* 190 */ 476, 476, 476, 380, 476, 364, 366, 476, 476, 476,
860 : /* 200 */ 348, 476, 355, 476, 476, 444, 367, 368, 437, 356,
861 : /* 210 */ 355, 445, 346, 369, 365, 438, 429, 390, 385, 386,
862 : /* 220 */ 452, 413, 451, 405, 419, 443, 406, 428, 411, 370,
863 : /* 230 */ 313, 319, 442, 450, 318, 317, 371, 320, 310, 323,
864 : /* 240 */ 322, 321, 316, 311, 342, 314, 448, 453, 447, 434,
865 : /* 250 */ 312, 449, 315, 341, 433, 446, 392, 468, 465, 343,
866 : /* 260 */ 334, 383, 412, 470, 456, 461, 454, 463, 464, 414,
867 : /* 270 */ 417, 349, 402, 353, 400, 403, 363, 401, 418, 361,
868 : /* 280 */ 362, 336, 374, 473, 397, 399, 455, 396, 372, 357,
869 : /* 290 */ 394, 425, 388, 358, 393, 398, 472, 423, 467, 466,
870 : /* 300 */ 475, 373, 469, 471, 474, 395, 462, 375, 387,
871 : );
872 : /* The next thing included is series of defines which control
873 : ** various aspects of the generated parser.
874 : ** self::YYNOCODE is a number which corresponds
875 : ** to no legal terminal or nonterminal number. This
876 : ** number is used to fill in empty slots of the hash
877 : ** table.
878 : ** self::YYFALLBACK If defined, this indicates that one or more tokens
879 : ** have fall-back values which should be used if the
880 : ** original value of the token will not parse.
881 : ** self::YYSTACKDEPTH is the maximum depth of the parser's stack.
882 : ** self::YYNSTATE the combined number of states.
883 : ** self::YYNRULE the number of rules in the grammar
884 : ** self::YYERRORSYMBOL is the code number of the error symbol. If not
885 : ** defined, then do no error processing.
886 : */
887 : const YYNOCODE = 114;
888 : const YYSTACKDEPTH = 100;
889 : const YYNSTATE = 309;
890 : const YYNRULE = 167;
891 : const YYERRORSYMBOL = 70;
892 : const YYERRSYMDT = 'yy0';
893 : const YYFALLBACK = 1;
894 : /** The next table maps tokens into fallback tokens. If a construct
895 : * like the following:
896 : *
897 : * %fallback ID X Y Z.
898 : *
899 : * appears in the grammer, then ID becomes a fallback token for X, Y,
900 : * and Z. Whenever one of the tokens X, Y, or Z is input to the parser
901 : * but it does not parse, the type of the token is changed to ID and
902 : * the parse is retried before an error is thrown.
903 : */
904 : static public $yyFallback = array(
905 : 0, /* $ => nothing */
906 : 0, /* OTHER => nothing */
907 : 1, /* XML => OTHER */
908 : 1, /* PHP => OTHER */
909 : 1, /* SHORTTAGSTART => OTHER */
910 : 1, /* SHORTTAGEND => OTHER */
911 : 1, /* PHPSTART => OTHER */
912 : 1, /* PHPEND => OTHER */
913 : 1, /* COMMENT => OTHER */
914 : 1, /* SINGLEQUOTE => OTHER */
915 : 1, /* LITERALSTART => OTHER */
916 : 1, /* LITERALEND => OTHER */
917 : 1, /* LDELIMTAG => OTHER */
918 : 1, /* RDELIMTAG => OTHER */
919 : 1, /* LDELSLASH => OTHER */
920 : 1, /* LDEL => OTHER */
921 : 1, /* RDEL => OTHER */
922 : 1, /* ISIN => OTHER */
923 : 1, /* AS => OTHER */
924 : 1, /* BOOLEAN => OTHER */
925 : 1, /* NULL => OTHER */
926 : 1, /* IDENTITY => OTHER */
927 : 1, /* NONEIDENTITY => OTHER */
928 : 1, /* EQUALS => OTHER */
929 : 1, /* NOTEQUALS => OTHER */
930 : 1, /* GREATEREQUAL => OTHER */
931 : 1, /* LESSEQUAL => OTHER */
932 : 1, /* GREATERTHAN => OTHER */
933 : 1, /* LESSTHAN => OTHER */
934 : 1, /* NOT => OTHER */
935 : 1, /* LAND => OTHER */
936 : 1, /* LOR => OTHER */
937 : 1, /* LXOR => OTHER */
938 : 1, /* ISODDBY => OTHER */
939 : 1, /* ISNOTODDBY => OTHER */
940 : 1, /* ISODD => OTHER */
941 : 1, /* ISNOTODD => OTHER */
942 : 1, /* ISEVENBY => OTHER */
943 : 1, /* ISNOTEVENBY => OTHER */
944 : 1, /* ISEVEN => OTHER */
945 : 1, /* ISNOTEVEN => OTHER */
946 : 1, /* ISDIVBY => OTHER */
947 : 1, /* ISNOTDIVBY => OTHER */
948 : 1, /* OPENP => OTHER */
949 : 1, /* CLOSEP => OTHER */
950 : 1, /* OPENB => OTHER */
951 : 1, /* CLOSEB => OTHER */
952 : 1, /* PTR => OTHER */
953 : 1, /* APTR => OTHER */
954 : 1, /* EQUAL => OTHER */
955 : 1, /* INTEGER => OTHER */
956 : 1, /* INCDEC => OTHER */
957 : 1, /* UNIMATH => OTHER */
958 : 1, /* MATH => OTHER */
959 : 1, /* DOLLAR => OTHER */
960 : 1, /* COLON => OTHER */
961 : 1, /* DOUBLECOLON => OTHER */
962 : 1, /* SEMICOLON => OTHER */
963 : 1, /* AT => OTHER */
964 : 1, /* HATCH => OTHER */
965 : 1, /* QUOTE => OTHER */
966 : 1, /* BACKTICK => OTHER */
967 : 1, /* VERT => OTHER */
968 : 1, /* DOT => OTHER */
969 : 1, /* COMMA => OTHER */
970 : 1, /* ANDSYM => OTHER */
971 : 1, /* ID => OTHER */
972 : 1, /* SPACE => OTHER */
973 : 1, /* INSTANCEOF => OTHER */
974 : 1, /* QMARK => OTHER */
975 : );
976 : /**
977 : * Turn parser tracing on by giving a stream to which to write the trace
978 : * and a prompt to preface each trace message. Tracing is turned off
979 : * by making either argument NULL
980 : *
981 : * Inputs:
982 : *
983 : * - A stream resource to which trace output should be written.
984 : * If NULL, then tracing is turned off.
985 : * - A prefix string written at the beginning of every
986 : * line of trace output. If NULL, then tracing is
987 : * turned off.
988 : *
989 : * Outputs:
990 : *
991 : * - None.
992 : * @param resource
993 : * @param string
994 : */
995 : static function Trace($TraceFILE, $zTracePrompt)
996 : {
997 0 : if (!$TraceFILE) {
998 0 : $zTracePrompt = 0;
999 0 : } elseif (!$zTracePrompt) {
1000 0 : $TraceFILE = 0;
1001 0 : }
1002 0 : self::$yyTraceFILE = $TraceFILE;
1003 0 : self::$yyTracePrompt = $zTracePrompt;
1004 0 : }
1005 :
1006 : /**
1007 : * Output debug information to output (php://output stream)
1008 : */
1009 : static function PrintTrace()
1010 : {
1011 0 : self::$yyTraceFILE = fopen('php://output', 'w');
1012 0 : self::$yyTracePrompt = '<br>';
1013 0 : }
1014 :
1015 : /**
1016 : * @var resource|0
1017 : */
1018 : static public $yyTraceFILE;
1019 : /**
1020 : * String to prepend to debug output
1021 : * @var string|0
1022 : */
1023 : static public $yyTracePrompt;
1024 : /**
1025 : * @var int
1026 : */
1027 : public $yyidx; /* Index of top element in stack */
1028 : /**
1029 : * @var int
1030 : */
1031 : public $yyerrcnt; /* Shifts left before out of the error */
1032 : /**
1033 : * @var array
1034 : */
1035 : public $yystack = array(); /* The parser's stack */
1036 :
1037 : /**
1038 : * For tracing shifts, the names of all terminals and nonterminals
1039 : * are required. The following table supplies these names
1040 : * @var array
1041 : */
1042 : public $yyTokenName = array(
1043 : '$', 'OTHER', 'XML', 'PHP',
1044 : 'SHORTTAGSTART', 'SHORTTAGEND', 'PHPSTART', 'PHPEND',
1045 : 'COMMENT', 'SINGLEQUOTE', 'LITERALSTART', 'LITERALEND',
1046 : 'LDELIMTAG', 'RDELIMTAG', 'LDELSLASH', 'LDEL',
1047 : 'RDEL', 'ISIN', 'AS', 'BOOLEAN',
1048 : 'NULL', 'IDENTITY', 'NONEIDENTITY', 'EQUALS',
1049 : 'NOTEQUALS', 'GREATEREQUAL', 'LESSEQUAL', 'GREATERTHAN',
1050 : 'LESSTHAN', 'NOT', 'LAND', 'LOR',
1051 : 'LXOR', 'ISODDBY', 'ISNOTODDBY', 'ISODD',
1052 : 'ISNOTODD', 'ISEVENBY', 'ISNOTEVENBY', 'ISEVEN',
1053 : 'ISNOTEVEN', 'ISDIVBY', 'ISNOTDIVBY', 'OPENP',
1054 : 'CLOSEP', 'OPENB', 'CLOSEB', 'PTR',
1055 : 'APTR', 'EQUAL', 'INTEGER', 'INCDEC',
1056 : 'UNIMATH', 'MATH', 'DOLLAR', 'COLON',
1057 : 'DOUBLECOLON', 'SEMICOLON', 'AT', 'HATCH',
1058 : 'QUOTE', 'BACKTICK', 'VERT', 'DOT',
1059 : 'COMMA', 'ANDSYM', 'ID', 'SPACE',
1060 : 'INSTANCEOF', 'QMARK', 'error', 'start',
1061 : 'template', 'template_element', 'smartytag', 'smartyclosetag',
1062 : 'outputtag', 'text', 'variable', 'attributes',
1063 : 'expr', 'ternary', 'varindexed', 'modifier',
1064 : 'modparameters', 'ifexprs', 'statement', 'statements',
1065 : 'varvar', 'foraction', 'value', 'array',
1066 : 'attribute', 'exprs', 'math', 'function',
1067 : 'doublequoted', 'method', 'params', 'objectchain',
1068 : 'arrayindex', 'object', 'indexdef', 'varvarele',
1069 : 'objectelement', 'modparameter', 'ifexpr', 'ifcond',
1070 : 'lop', 'arrayelements', 'arrayelement', 'doublequotedcontent',
1071 : 'textelement',
1072 : );
1073 :
1074 : /**
1075 : * For tracing reduce actions, the names of all rules are required.
1076 : * @var array
1077 : */
1078 : static public $yyRuleName = array(
1079 : /* 0 */ "start ::= template",
1080 : /* 1 */ "template ::= template_element",
1081 : /* 2 */ "template ::= template template_element",
1082 : /* 3 */ "template_element ::= LDEL smartytag RDEL",
1083 : /* 4 */ "template_element ::= LDELSLASH smartyclosetag RDEL",
1084 : /* 5 */ "template_element ::= LDEL outputtag RDEL",
1085 : /* 6 */ "template_element ::= COMMENT",
1086 : /* 7 */ "template_element ::= LITERALSTART text LITERALEND",
1087 : /* 8 */ "template_element ::= LDELIMTAG",
1088 : /* 9 */ "template_element ::= RDELIMTAG",
1089 : /* 10 */ "template_element ::= PHP OTHER SHORTTAGEND",
1090 : /* 11 */ "template_element ::= SHORTTAGSTART OTHER SHORTTAGEND",
1091 : /* 12 */ "template_element ::= XML",
1092 : /* 13 */ "template_element ::= SHORTTAGEND",
1093 : /* 14 */ "template_element ::= OTHER",
1094 : /* 15 */ "outputtag ::= variable attributes",
1095 : /* 16 */ "outputtag ::= expr attributes",
1096 : /* 17 */ "outputtag ::= ternary attributes",
1097 : /* 18 */ "smartytag ::= varindexed EQUAL expr attributes",
1098 : /* 19 */ "smartytag ::= varindexed EQUAL ternary attributes",
1099 : /* 20 */ "smartytag ::= ID attributes",
1100 : /* 21 */ "smartytag ::= ID PTR ID attributes",
1101 : /* 22 */ "smartytag ::= ID modifier modparameters attributes",
1102 : /* 23 */ "smartytag ::= ID SPACE ifexprs",
1103 : /* 24 */ "smartytag ::= ID SPACE statement",
1104 : /* 25 */ "smartytag ::= ID SPACE statements SEMICOLON ifexprs SEMICOLON DOLLAR varvar foraction",
1105 : /* 26 */ "foraction ::= EQUAL expr",
1106 : /* 27 */ "foraction ::= INCDEC",
1107 : /* 28 */ "smartytag ::= ID SPACE value AS DOLLAR varvar",
1108 : /* 29 */ "smartytag ::= ID SPACE array AS DOLLAR varvar",
1109 : /* 30 */ "smartyclosetag ::= ID attributes",
1110 : /* 31 */ "smartyclosetag ::= ID modifier modparameters attributes",
1111 : /* 32 */ "smartyclosetag ::= ID PTR ID",
1112 : /* 33 */ "attributes ::= attributes attribute",
1113 : /* 34 */ "attributes ::= attribute",
1114 : /* 35 */ "attributes ::=",
1115 : /* 36 */ "attribute ::= SPACE ID EQUAL expr",
1116 : /* 37 */ "attribute ::= SPACE ID EQUAL ternary",
1117 : /* 38 */ "attribute ::= SPACE ID",
1118 : /* 39 */ "statements ::= statement",
1119 : /* 40 */ "statements ::= statements COMMA statement",
1120 : /* 41 */ "statement ::= DOLLAR varvar EQUAL expr",
1121 : /* 42 */ "expr ::= ID",
1122 : /* 43 */ "expr ::= exprs",
1123 : /* 44 */ "expr ::= DOLLAR ID COLON ID",
1124 : /* 45 */ "expr ::= expr modifier modparameters",
1125 : /* 46 */ "exprs ::= value",
1126 : /* 47 */ "exprs ::= UNIMATH value",
1127 : /* 48 */ "exprs ::= exprs math value",
1128 : /* 49 */ "exprs ::= array",
1129 : /* 50 */ "ternary ::= OPENP ifexprs CLOSEP QMARK expr COLON expr",
1130 : /* 51 */ "ternary ::= OPENP expr CLOSEP QMARK expr COLON expr",
1131 : /* 52 */ "math ::= UNIMATH",
1132 : /* 53 */ "math ::= MATH",
1133 : /* 54 */ "math ::= ANDSYM",
1134 : /* 55 */ "value ::= variable",
1135 : /* 56 */ "value ::= variable INCDEC",
1136 : /* 57 */ "value ::= INTEGER",
1137 : /* 58 */ "value ::= INTEGER DOT INTEGER",
1138 : /* 59 */ "value ::= BOOLEAN",
1139 : /* 60 */ "value ::= NULL",
1140 : /* 61 */ "value ::= function",
1141 : /* 62 */ "value ::= OPENP expr CLOSEP",
1142 : /* 63 */ "value ::= SINGLEQUOTE text SINGLEQUOTE",
1143 : /* 64 */ "value ::= SINGLEQUOTE SINGLEQUOTE",
1144 : /* 65 */ "value ::= QUOTE doublequoted QUOTE",
1145 : /* 66 */ "value ::= QUOTE QUOTE",
1146 : /* 67 */ "value ::= ID DOUBLECOLON method",
1147 : /* 68 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP",
1148 : /* 69 */ "value ::= ID DOUBLECOLON method objectchain",
1149 : /* 70 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP objectchain",
1150 : /* 71 */ "value ::= ID DOUBLECOLON ID",
1151 : /* 72 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex",
1152 : /* 73 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex objectchain",
1153 : /* 74 */ "value ::= LDEL smartytag RDEL",
1154 : /* 75 */ "variable ::= varindexed",
1155 : /* 76 */ "variable ::= DOLLAR varvar AT ID",
1156 : /* 77 */ "variable ::= object",
1157 : /* 78 */ "variable ::= HATCH ID HATCH",
1158 : /* 79 */ "variable ::= HATCH variable HATCH",
1159 : /* 80 */ "varindexed ::= DOLLAR varvar arrayindex",
1160 : /* 81 */ "arrayindex ::= arrayindex indexdef",
1161 : /* 82 */ "arrayindex ::=",
1162 : /* 83 */ "indexdef ::= DOT ID",
1163 : /* 84 */ "indexdef ::= DOT INTEGER",
1164 : /* 85 */ "indexdef ::= DOT variable",
1165 : /* 86 */ "indexdef ::= DOT LDEL exprs RDEL",
1166 : /* 87 */ "indexdef ::= OPENB ID CLOSEB",
1167 : /* 88 */ "indexdef ::= OPENB ID DOT ID CLOSEB",
1168 : /* 89 */ "indexdef ::= OPENB exprs CLOSEB",
1169 : /* 90 */ "indexdef ::= OPENB CLOSEB",
1170 : /* 91 */ "varvar ::= varvarele",
1171 : /* 92 */ "varvar ::= varvar varvarele",
1172 : /* 93 */ "varvarele ::= ID",
1173 : /* 94 */ "varvarele ::= LDEL expr RDEL",
1174 : /* 95 */ "object ::= varindexed objectchain",
1175 : /* 96 */ "objectchain ::= objectelement",
1176 : /* 97 */ "objectchain ::= objectchain objectelement",
1177 : /* 98 */ "objectelement ::= PTR ID arrayindex",
1178 : /* 99 */ "objectelement ::= PTR variable arrayindex",
1179 : /* 100 */ "objectelement ::= PTR LDEL expr RDEL arrayindex",
1180 : /* 101 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
1181 : /* 102 */ "objectelement ::= PTR method",
1182 : /* 103 */ "function ::= ID OPENP params CLOSEP",
1183 : /* 104 */ "method ::= ID OPENP params CLOSEP",
1184 : /* 105 */ "params ::= expr COMMA params",
1185 : /* 106 */ "params ::= expr",
1186 : /* 107 */ "params ::=",
1187 : /* 108 */ "modifier ::= VERT AT ID",
1188 : /* 109 */ "modifier ::= VERT ID",
1189 : /* 110 */ "modparameters ::= modparameters modparameter",
1190 : /* 111 */ "modparameters ::=",
1191 : /* 112 */ "modparameter ::= COLON exprs",
1192 : /* 113 */ "modparameter ::= COLON ID",
1193 : /* 114 */ "ifexprs ::= ifexpr",
1194 : /* 115 */ "ifexprs ::= NOT ifexprs",
1195 : /* 116 */ "ifexprs ::= OPENP ifexprs CLOSEP",
1196 : /* 117 */ "ifexpr ::= expr",
1197 : /* 118 */ "ifexpr ::= expr ifcond expr",
1198 : /* 119 */ "ifexpr ::= expr ISIN array",
1199 : /* 120 */ "ifexpr ::= expr ISIN value",
1200 : /* 121 */ "ifexpr ::= ifexprs lop ifexprs",
1201 : /* 122 */ "ifexpr ::= ifexprs ISDIVBY ifexprs",
1202 : /* 123 */ "ifexpr ::= ifexprs ISNOTDIVBY ifexprs",
1203 : /* 124 */ "ifexpr ::= ifexprs ISEVEN",
1204 : /* 125 */ "ifexpr ::= ifexprs ISNOTEVEN",
1205 : /* 126 */ "ifexpr ::= ifexprs ISEVENBY ifexprs",
1206 : /* 127 */ "ifexpr ::= ifexprs ISNOTEVENBY ifexprs",
1207 : /* 128 */ "ifexpr ::= ifexprs ISODD",
1208 : /* 129 */ "ifexpr ::= ifexprs ISNOTODD",
1209 : /* 130 */ "ifexpr ::= ifexprs ISODDBY ifexprs",
1210 : /* 131 */ "ifexpr ::= ifexprs ISNOTODDBY ifexprs",
1211 : /* 132 */ "ifexpr ::= value INSTANCEOF ID",
1212 : /* 133 */ "ifexpr ::= value INSTANCEOF value",
1213 : /* 134 */ "ifcond ::= EQUALS",
1214 : /* 135 */ "ifcond ::= NOTEQUALS",
1215 : /* 136 */ "ifcond ::= GREATERTHAN",
1216 : /* 137 */ "ifcond ::= LESSTHAN",
1217 : /* 138 */ "ifcond ::= GREATEREQUAL",
1218 : /* 139 */ "ifcond ::= LESSEQUAL",
1219 : /* 140 */ "ifcond ::= IDENTITY",
1220 : /* 141 */ "ifcond ::= NONEIDENTITY",
1221 : /* 142 */ "lop ::= LAND",
1222 : /* 143 */ "lop ::= LOR",
1223 : /* 144 */ "lop ::= LXOR",
1224 : /* 145 */ "array ::= OPENB arrayelements CLOSEB",
1225 : /* 146 */ "arrayelements ::= arrayelement",
1226 : /* 147 */ "arrayelements ::= arrayelements COMMA arrayelement",
1227 : /* 148 */ "arrayelements ::=",
1228 : /* 149 */ "arrayelement ::= expr APTR expr",
1229 : /* 150 */ "arrayelement ::= ID APTR expr",
1230 : /* 151 */ "arrayelement ::= expr",
1231 : /* 152 */ "doublequoted ::= doublequoted doublequotedcontent",
1232 : /* 153 */ "doublequoted ::= doublequotedcontent",
1233 : /* 154 */ "doublequotedcontent ::= BACKTICK ID BACKTICK",
1234 : /* 155 */ "doublequotedcontent ::= BACKTICK variable BACKTICK",
1235 : /* 156 */ "doublequotedcontent ::= DOLLAR ID",
1236 : /* 157 */ "doublequotedcontent ::= LDEL expr RDEL",
1237 : /* 158 */ "doublequotedcontent ::= LDEL smartytag RDEL",
1238 : /* 159 */ "doublequotedcontent ::= DOLLAR OTHER",
1239 : /* 160 */ "doublequotedcontent ::= LDEL OTHER",
1240 : /* 161 */ "doublequotedcontent ::= BACKTICK OTHER",
1241 : /* 162 */ "doublequotedcontent ::= OTHER",
1242 : /* 163 */ "text ::= text textelement",
1243 : /* 164 */ "text ::= textelement",
1244 : /* 165 */ "textelement ::= OTHER",
1245 : /* 166 */ "textelement ::= LDEL",
1246 : );
1247 :
1248 : /**
1249 : * This function returns the symbolic name associated with a token
1250 : * value.
1251 : * @param int
1252 : * @return string
1253 : */
1254 : function tokenName($tokenType)
1255 : {
1256 0 : if ($tokenType === 0) {
1257 0 : return 'End of Input';
1258 : }
1259 0 : if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
1260 0 : return $this->yyTokenName[$tokenType];
1261 : } else {
1262 0 : return "Unknown";
1263 : }
1264 : }
1265 :
1266 : /**
1267 : * The following function deletes the value associated with a
1268 : * symbol. The symbol can be either a terminal or nonterminal.
1269 : * @param int the symbol code
1270 : * @param mixed the symbol's value
1271 : */
1272 : static function yy_destructor($yymajor, $yypminor)
1273 : {
1274 : switch ($yymajor) {
1275 : /* Here is inserted the actions which take place when a
1276 : ** terminal or non-terminal is destroyed. This can happen
1277 : ** when the symbol is popped from the stack during a
1278 : ** reduce or during error processing or when a parser is
1279 : ** being destroyed before it is finished parsing.
1280 : **
1281 : ** Note: during a reduce, the only symbols destroyed are those
1282 : ** which appear on the RHS of the rule, but which are not used
1283 : ** inside the C code.
1284 : */
1285 375 : default: break; /* If no destructor action specified: do nothing */
1286 375 : }
1287 375 : }
1288 :
1289 : /**
1290 : * Pop the parser's stack once.
1291 : *
1292 : * If there is a destructor routine associated with the token which
1293 : * is popped from the stack, then call it.
1294 : *
1295 : * Return the major token number for the symbol popped.
1296 : * @param TP_yyParser
1297 : * @return int
1298 : */
1299 : function yy_pop_parser_stack()
1300 : {
1301 375 : if (!count($this->yystack)) {
1302 0 : return;
1303 : }
1304 375 : $yytos = array_pop($this->yystack);
1305 375 : if (self::$yyTraceFILE && $this->yyidx >= 0) {
1306 0 : fwrite(self::$yyTraceFILE,
1307 0 : self::$yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
1308 0 : "\n");
1309 0 : }
1310 375 : $yymajor = $yytos->major;
1311 375 : self::yy_destructor($yymajor, $yytos->minor);
1312 375 : $this->yyidx--;
1313 375 : return $yymajor;
1314 : }
1315 :
1316 : /**
1317 : * Deallocate and destroy a parser. Destructors are all called for
1318 : * all stack elements before shutting the parser down.
1319 : */
1320 : function __destruct()
1321 : {
1322 378 : while ($this->yyidx >= 0) {
1323 3 : $this->yy_pop_parser_stack();
1324 3 : }
1325 378 : if (is_resource(self::$yyTraceFILE)) {
1326 0 : fclose(self::$yyTraceFILE);
1327 0 : }
1328 378 : }
1329 :
1330 : /**
1331 : * Based on the current state and parser stack, get a list of all
1332 : * possible lookahead tokens
1333 : * @param int
1334 : * @return array
1335 : */
1336 : function yy_get_expected_tokens($token)
1337 : {
1338 1 : $state = $this->yystack[$this->yyidx]->stateno;
1339 1 : $expected = self::$yyExpectedTokens[$state];
1340 1 : if (in_array($token, self::$yyExpectedTokens[$state], true)) {
1341 0 : return $expected;
1342 : }
1343 1 : $stack = $this->yystack;
1344 1 : $yyidx = $this->yyidx;
1345 : do {
1346 1 : $yyact = $this->yy_find_shift_action($token);
1347 1 : if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1348 : // reduce action
1349 0 : $done = 0;
1350 : do {
1351 0 : if ($done++ == 100) {
1352 0 : $this->yyidx = $yyidx;
1353 0 : $this->yystack = $stack;
1354 : // too much recursion prevents proper detection
1355 : // so give up
1356 0 : return array_unique($expected);
1357 : }
1358 0 : $yyruleno = $yyact - self::YYNSTATE;
1359 0 : $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
1360 0 : $nextstate = $this->yy_find_reduce_action(
1361 0 : $this->yystack[$this->yyidx]->stateno,
1362 0 : self::$yyRuleInfo[$yyruleno]['lhs']);
1363 0 : if (isset(self::$yyExpectedTokens[$nextstate])) {
1364 0 : $expected += self::$yyExpectedTokens[$nextstate];
1365 0 : if (in_array($token,
1366 0 : self::$yyExpectedTokens[$nextstate], true)) {
1367 0 : $this->yyidx = $yyidx;
1368 0 : $this->yystack = $stack;
1369 0 : return array_unique($expected);
1370 : }
1371 0 : }
1372 0 : if ($nextstate < self::YYNSTATE) {
1373 : // we need to shift a non-terminal
1374 0 : $this->yyidx++;
1375 0 : $x = new TP_yyStackEntry;
1376 0 : $x->stateno = $nextstate;
1377 0 : $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
1378 0 : $this->yystack[$this->yyidx] = $x;
1379 0 : continue 2;
1380 0 : } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
1381 0 : $this->yyidx = $yyidx;
1382 0 : $this->yystack = $stack;
1383 : // the last token was just ignored, we can't accept
1384 : // by ignoring input, this is in essence ignoring a
1385 : // syntax error!
1386 0 : return array_unique($expected);
1387 0 : } elseif ($nextstate === self::YY_NO_ACTION) {
1388 0 : $this->yyidx = $yyidx;
1389 0 : $this->yystack = $stack;
1390 : // input accepted, but not shifted (I guess)
1391 0 : return $expected;
1392 : } else {
1393 0 : $yyact = $nextstate;
1394 : }
1395 0 : } while (true);
1396 0 : }
1397 1 : break;
1398 0 : } while (true);
1399 1 : return array_unique($expected);
1400 : }
1401 :
1402 : /**
1403 : * Based on the parser state and current parser stack, determine whether
1404 : * the lookahead token is possible.
1405 : *
1406 : * The parser will convert the token value to an error token if not. This
1407 : * catches some unusual edge cases where the parser would fail.
1408 : * @param int
1409 : * @return bool
1410 : */
1411 : function yy_is_expected_token($token)
1412 : {
1413 388 : if ($token === 0) {
1414 375 : return true; // 0 is not part of this
1415 : }
1416 388 : $state = $this->yystack[$this->yyidx]->stateno;
1417 388 : if (in_array($token, self::$yyExpectedTokens[$state], true)) {
1418 388 : return true;
1419 : }
1420 370 : $stack = $this->yystack;
1421 370 : $yyidx = $this->yyidx;
1422 : do {
1423 370 : $yyact = $this->yy_find_shift_action($token);
1424 370 : if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1425 : // reduce action
1426 369 : $done = 0;
1427 : do {
1428 369 : if ($done++ == 100) {
1429 0 : $this->yyidx = $yyidx;
1430 0 : $this->yystack = $stack;
1431 : // too much recursion prevents proper detection
1432 : // so give up
1433 0 : return true;
1434 : }
1435 369 : $yyruleno = $yyact - self::YYNSTATE;
1436 369 : $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
1437 369 : $nextstate = $this->yy_find_reduce_action(
1438 369 : $this->yystack[$this->yyidx]->stateno,
1439 369 : self::$yyRuleInfo[$yyruleno]['lhs']);
1440 369 : if (isset(self::$yyExpectedTokens[$nextstate]) &&
1441 369 : in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
1442 369 : $this->yyidx = $yyidx;
1443 369 : $this->yystack = $stack;
1444 369 : return true;
1445 : }
1446 369 : if ($nextstate < self::YYNSTATE) {
1447 : // we need to shift a non-terminal
1448 369 : $this->yyidx++;
1449 369 : $x = new TP_yyStackEntry;
1450 369 : $x->stateno = $nextstate;
1451 369 : $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
1452 369 : $this->yystack[$this->yyidx] = $x;
1453 369 : continue 2;
1454 0 : } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
1455 0 : $this->yyidx = $yyidx;
1456 0 : $this->yystack = $stack;
1457 0 : if (!$token) {
1458 : // end of input: this is valid
1459 0 : return true;
1460 : }
1461 : // the last token was just ignored, we can't accept
1462 : // by ignoring input, this is in essence ignoring a
1463 : // syntax error!
1464 0 : return false;
1465 0 : } elseif ($nextstate === self::YY_NO_ACTION) {
1466 0 : $this->yyidx = $yyidx;
1467 0 : $this->yystack = $stack;
1468 : // input accepted, but not shifted (I guess)
1469 0 : return true;
1470 : } else {
1471 0 : $yyact = $nextstate;
1472 : }
1473 0 : } while (true);
1474 0 : }
1475 139 : break;
1476 0 : } while (true);
1477 139 : $this->yyidx = $yyidx;
1478 139 : $this->yystack = $stack;
1479 139 : return true;
1480 : }
1481 :
1482 : /**
1483 : * Find the appropriate action for a parser given the terminal
1484 : * look-ahead token iLookAhead.
1485 : *
1486 : * If the look-ahead token is YYNOCODE, then check to see if the action is
1487 : * independent of the look-ahead. If it is, return the action, otherwise
1488 : * return YY_NO_ACTION.
1489 : * @param int The look-ahead token
1490 : */
1491 : function yy_find_shift_action($iLookAhead)
1492 : {
1493 388 : $stateno = $this->yystack[$this->yyidx]->stateno;
1494 :
1495 : /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
1496 388 : if (!isset(self::$yy_shift_ofst[$stateno])) {
1497 : // no shift actions
1498 384 : return self::$yy_default[$stateno];
1499 : }
1500 388 : $i = self::$yy_shift_ofst[$stateno];
1501 388 : if ($i === self::YY_SHIFT_USE_DFLT) {
1502 17 : return self::$yy_default[$stateno];
1503 : }
1504 388 : if ($iLookAhead == self::YYNOCODE) {
1505 0 : return self::YY_NO_ACTION;
1506 : }
1507 388 : $i += $iLookAhead;
1508 388 : if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
1509 388 : self::$yy_lookahead[$i] != $iLookAhead) {
1510 388 : if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
1511 388 : && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
1512 364 : if (self::$yyTraceFILE) {
1513 0 : fwrite(self::$yyTraceFILE, self::$yyTracePrompt . "FALLBACK " .
1514 0 : $this->yyTokenName[$iLookAhead] . " => " .
1515 0 : $this->yyTokenName[$iFallback] . "\n");
1516 0 : }
1517 364 : return $this->yy_find_shift_action($iFallback);
1518 : }
1519 388 : return self::$yy_default[$stateno];
1520 : } else {
1521 388 : return self::$yy_action[$i];
1522 : }
1523 : }
1524 :
1525 : /**
1526 : * Find the appropriate action for a parser given the non-terminal
1527 : * look-ahead token $iLookAhead.
1528 : *
1529 : * If the look-ahead token is self::YYNOCODE, then check to see if the action is
1530 : * independent of the look-ahead. If it is, return the action, otherwise
1531 : * return self::YY_NO_ACTION.
1532 : * @param int Current state number
1533 : * @param int The look-ahead token
1534 : */
1535 : function yy_find_reduce_action($stateno, $iLookAhead)
1536 : {
1537 : /* $stateno = $this->yystack[$this->yyidx]->stateno; */
1538 :
1539 387 : if (!isset(self::$yy_reduce_ofst[$stateno])) {
1540 0 : return self::$yy_default[$stateno];
1541 : }
1542 387 : $i = self::$yy_reduce_ofst[$stateno];
1543 387 : if ($i == self::YY_REDUCE_USE_DFLT) {
1544 0 : return self::$yy_default[$stateno];
1545 : }
1546 387 : if ($iLookAhead == self::YYNOCODE) {
1547 0 : return self::YY_NO_ACTION;
1548 : }
1549 387 : $i += $iLookAhead;
1550 387 : if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
1551 387 : self::$yy_lookahead[$i] != $iLookAhead) {
1552 0 : return self::$yy_default[$stateno];
1553 : } else {
1554 387 : return self::$yy_action[$i];
1555 : }
1556 : }
1557 :
1558 : /**
1559 : * Perform a shift action.
1560 : * @param int The new state to shift in
1561 : * @param int The major token to shift in
1562 : * @param mixed the minor token to shift in
1563 : */
1564 : function yy_shift($yyNewState, $yyMajor, $yypMinor)
1565 : {
1566 388 : $this->yyidx++;
1567 388 : if ($this->yyidx >= self::YYSTACKDEPTH) {
1568 0 : $this->yyidx--;
1569 0 : if (self::$yyTraceFILE) {
1570 0 : fprintf(self::$yyTraceFILE, "%sStack Overflow!\n", self::$yyTracePrompt);
1571 0 : }
1572 0 : while ($this->yyidx >= 0) {
1573 0 : $this->yy_pop_parser_stack();
1574 0 : }
1575 : /* Here code is inserted which will execute if the parser
1576 : ** stack ever overflows */
1577 0 : return;
1578 : }
1579 388 : $yytos = new TP_yyStackEntry;
1580 388 : $yytos->stateno = $yyNewState;
1581 388 : $yytos->major = $yyMajor;
1582 388 : $yytos->minor = $yypMinor;
1583 388 : array_push($this->yystack, $yytos);
1584 388 : if (self::$yyTraceFILE && $this->yyidx > 0) {
1585 0 : fprintf(self::$yyTraceFILE, "%sShift %d\n", self::$yyTracePrompt,
1586 0 : $yyNewState);
1587 0 : fprintf(self::$yyTraceFILE, "%sStack:", self::$yyTracePrompt);
1588 0 : for($i = 1; $i <= $this->yyidx; $i++) {
1589 0 : fprintf(self::$yyTraceFILE, " %s",
1590 0 : $this->yyTokenName[$this->yystack[$i]->major]);
1591 0 : }
1592 0 : fwrite(self::$yyTraceFILE,"\n");
1593 0 : }
1594 388 : }
1595 :
1596 : /**
1597 : * The following table contains information about every rule that
1598 : * is used during the reduce.
1599 : *
1600 : * <pre>
1601 : * array(
1602 : * array(
1603 : * int $lhs; Symbol on the left-hand side of the rule
1604 : * int $nrhs; Number of right-hand side symbols in the rule
1605 : * ),...
1606 : * );
1607 : * </pre>
1608 : */
1609 : static public $yyRuleInfo = array(
1610 : array( 'lhs' => 71, 'rhs' => 1 ),
1611 : array( 'lhs' => 72, 'rhs' => 1 ),
1612 : array( 'lhs' => 72, 'rhs' => 2 ),
1613 : array( 'lhs' => 73, 'rhs' => 3 ),
1614 : array( 'lhs' => 73, 'rhs' => 3 ),
1615 : array( 'lhs' => 73, 'rhs' => 3 ),
1616 : array( 'lhs' => 73, 'rhs' => 1 ),
1617 : array( 'lhs' => 73, 'rhs' => 3 ),
1618 : array( 'lhs' => 73, 'rhs' => 1 ),
1619 : array( 'lhs' => 73, 'rhs' => 1 ),
1620 : array( 'lhs' => 73, 'rhs' => 3 ),
1621 : array( 'lhs' => 73, 'rhs' => 3 ),
1622 : array( 'lhs' => 73, 'rhs' => 1 ),
1623 : array( 'lhs' => 73, 'rhs' => 1 ),
1624 : array( 'lhs' => 73, 'rhs' => 1 ),
1625 : array( 'lhs' => 76, 'rhs' => 2 ),
1626 : array( 'lhs' => 76, 'rhs' => 2 ),
1627 : array( 'lhs' => 76, 'rhs' => 2 ),
1628 : array( 'lhs' => 74, 'rhs' => 4 ),
1629 : array( 'lhs' => 74, 'rhs' => 4 ),
1630 : array( 'lhs' => 74, 'rhs' => 2 ),
1631 : array( 'lhs' => 74, 'rhs' => 4 ),
1632 : array( 'lhs' => 74, 'rhs' => 4 ),
1633 : array( 'lhs' => 74, 'rhs' => 3 ),
1634 : array( 'lhs' => 74, 'rhs' => 3 ),
1635 : array( 'lhs' => 74, 'rhs' => 9 ),
1636 : array( 'lhs' => 89, 'rhs' => 2 ),
1637 : array( 'lhs' => 89, 'rhs' => 1 ),
1638 : array( 'lhs' => 74, 'rhs' => 6 ),
1639 : array( 'lhs' => 74, 'rhs' => 6 ),
1640 : array( 'lhs' => 75, 'rhs' => 2 ),
1641 : array( 'lhs' => 75, 'rhs' => 4 ),
1642 : array( 'lhs' => 75, 'rhs' => 3 ),
1643 : array( 'lhs' => 79, 'rhs' => 2 ),
1644 : array( 'lhs' => 79, 'rhs' => 1 ),
1645 : array( 'lhs' => 79, 'rhs' => 0 ),
1646 : array( 'lhs' => 92, 'rhs' => 4 ),
1647 : array( 'lhs' => 92, 'rhs' => 4 ),
1648 : array( 'lhs' => 92, 'rhs' => 2 ),
1649 : array( 'lhs' => 87, 'rhs' => 1 ),
1650 : array( 'lhs' => 87, 'rhs' => 3 ),
1651 : array( 'lhs' => 86, 'rhs' => 4 ),
1652 : array( 'lhs' => 80, 'rhs' => 1 ),
1653 : array( 'lhs' => 80, 'rhs' => 1 ),
1654 : array( 'lhs' => 80, 'rhs' => 4 ),
1655 : array( 'lhs' => 80, 'rhs' => 3 ),
1656 : array( 'lhs' => 93, 'rhs' => 1 ),
1657 : array( 'lhs' => 93, 'rhs' => 2 ),
1658 : array( 'lhs' => 93, 'rhs' => 3 ),
1659 : array( 'lhs' => 93, 'rhs' => 1 ),
1660 : array( 'lhs' => 81, 'rhs' => 7 ),
1661 : array( 'lhs' => 81, 'rhs' => 7 ),
1662 : array( 'lhs' => 94, 'rhs' => 1 ),
1663 : array( 'lhs' => 94, 'rhs' => 1 ),
1664 : array( 'lhs' => 94, 'rhs' => 1 ),
1665 : array( 'lhs' => 90, 'rhs' => 1 ),
1666 : array( 'lhs' => 90, 'rhs' => 2 ),
1667 : array( 'lhs' => 90, 'rhs' => 1 ),
1668 : array( 'lhs' => 90, 'rhs' => 3 ),
1669 : array( 'lhs' => 90, 'rhs' => 1 ),
1670 : array( 'lhs' => 90, 'rhs' => 1 ),
1671 : array( 'lhs' => 90, 'rhs' => 1 ),
1672 : array( 'lhs' => 90, 'rhs' => 3 ),
1673 : array( 'lhs' => 90, 'rhs' => 3 ),
1674 : array( 'lhs' => 90, 'rhs' => 2 ),
1675 : array( 'lhs' => 90, 'rhs' => 3 ),
1676 : array( 'lhs' => 90, 'rhs' => 2 ),
1677 : array( 'lhs' => 90, 'rhs' => 3 ),
1678 : array( 'lhs' => 90, 'rhs' => 7 ),
1679 : array( 'lhs' => 90, 'rhs' => 4 ),
1680 : array( 'lhs' => 90, 'rhs' => 8 ),
1681 : array( 'lhs' => 90, 'rhs' => 3 ),
1682 : array( 'lhs' => 90, 'rhs' => 5 ),
1683 : array( 'lhs' => 90, 'rhs' => 6 ),
1684 : array( 'lhs' => 90, 'rhs' => 3 ),
1685 : array( 'lhs' => 78, 'rhs' => 1 ),
1686 : array( 'lhs' => 78, 'rhs' => 4 ),
1687 : array( 'lhs' => 78, 'rhs' => 1 ),
1688 : array( 'lhs' => 78, 'rhs' => 3 ),
1689 : array( 'lhs' => 78, 'rhs' => 3 ),
1690 : array( 'lhs' => 82, 'rhs' => 3 ),
1691 : array( 'lhs' => 100, 'rhs' => 2 ),
1692 : array( 'lhs' => 100, 'rhs' => 0 ),
1693 : array( 'lhs' => 102, 'rhs' => 2 ),
1694 : array( 'lhs' => 102, 'rhs' => 2 ),
1695 : array( 'lhs' => 102, 'rhs' => 2 ),
1696 : array( 'lhs' => 102, 'rhs' => 4 ),
1697 : array( 'lhs' => 102, 'rhs' => 3 ),
1698 : array( 'lhs' => 102, 'rhs' => 5 ),
1699 : array( 'lhs' => 102, 'rhs' => 3 ),
1700 : array( 'lhs' => 102, 'rhs' => 2 ),
1701 : array( 'lhs' => 88, 'rhs' => 1 ),
1702 : array( 'lhs' => 88, 'rhs' => 2 ),
1703 : array( 'lhs' => 103, 'rhs' => 1 ),
1704 : array( 'lhs' => 103, 'rhs' => 3 ),
1705 : array( 'lhs' => 101, 'rhs' => 2 ),
1706 : array( 'lhs' => 99, 'rhs' => 1 ),
1707 : array( 'lhs' => 99, 'rhs' => 2 ),
1708 : array( 'lhs' => 104, 'rhs' => 3 ),
1709 : array( 'lhs' => 104, 'rhs' => 3 ),
1710 : array( 'lhs' => 104, 'rhs' => 5 ),
1711 : array( 'lhs' => 104, 'rhs' => 6 ),
1712 : array( 'lhs' => 104, 'rhs' => 2 ),
1713 : array( 'lhs' => 95, 'rhs' => 4 ),
1714 : array( 'lhs' => 97, 'rhs' => 4 ),
1715 : array( 'lhs' => 98, 'rhs' => 3 ),
1716 : array( 'lhs' => 98, 'rhs' => 1 ),
1717 : array( 'lhs' => 98, 'rhs' => 0 ),
1718 : array( 'lhs' => 83, 'rhs' => 3 ),
1719 : array( 'lhs' => 83, 'rhs' => 2 ),
1720 : array( 'lhs' => 84, 'rhs' => 2 ),
1721 : array( 'lhs' => 84, 'rhs' => 0 ),
1722 : array( 'lhs' => 105, 'rhs' => 2 ),
1723 : array( 'lhs' => 105, 'rhs' => 2 ),
1724 : array( 'lhs' => 85, 'rhs' => 1 ),
1725 : array( 'lhs' => 85, 'rhs' => 2 ),
1726 : array( 'lhs' => 85, 'rhs' => 3 ),
1727 : array( 'lhs' => 106, 'rhs' => 1 ),
1728 : array( 'lhs' => 106, 'rhs' => 3 ),
1729 : array( 'lhs' => 106, 'rhs' => 3 ),
1730 : array( 'lhs' => 106, 'rhs' => 3 ),
1731 : array( 'lhs' => 106, 'rhs' => 3 ),
1732 : array( 'lhs' => 106, 'rhs' => 3 ),
1733 : array( 'lhs' => 106, 'rhs' => 3 ),
1734 : array( 'lhs' => 106, 'rhs' => 2 ),
1735 : array( 'lhs' => 106, 'rhs' => 2 ),
1736 : array( 'lhs' => 106, 'rhs' => 3 ),
1737 : array( 'lhs' => 106, 'rhs' => 3 ),
1738 : array( 'lhs' => 106, 'rhs' => 2 ),
1739 : array( 'lhs' => 106, 'rhs' => 2 ),
1740 : array( 'lhs' => 106, 'rhs' => 3 ),
1741 : array( 'lhs' => 106, 'rhs' => 3 ),
1742 : array( 'lhs' => 106, 'rhs' => 3 ),
1743 : array( 'lhs' => 106, 'rhs' => 3 ),
1744 : array( 'lhs' => 107, 'rhs' => 1 ),
1745 : array( 'lhs' => 107, 'rhs' => 1 ),
1746 : array( 'lhs' => 107, 'rhs' => 1 ),
1747 : array( 'lhs' => 107, 'rhs' => 1 ),
1748 : array( 'lhs' => 107, 'rhs' => 1 ),
1749 : array( 'lhs' => 107, 'rhs' => 1 ),
1750 : array( 'lhs' => 107, 'rhs' => 1 ),
1751 : array( 'lhs' => 107, 'rhs' => 1 ),
1752 : array( 'lhs' => 108, 'rhs' => 1 ),
1753 : array( 'lhs' => 108, 'rhs' => 1 ),
1754 : array( 'lhs' => 108, 'rhs' => 1 ),
1755 : array( 'lhs' => 91, 'rhs' => 3 ),
1756 : array( 'lhs' => 109, 'rhs' => 1 ),
1757 : array( 'lhs' => 109, 'rhs' => 3 ),
1758 : array( 'lhs' => 109, 'rhs' => 0 ),
1759 : array( 'lhs' => 110, 'rhs' => 3 ),
1760 : array( 'lhs' => 110, 'rhs' => 3 ),
1761 : array( 'lhs' => 110, 'rhs' => 1 ),
1762 : array( 'lhs' => 96, 'rhs' => 2 ),
1763 : array( 'lhs' => 96, 'rhs' => 1 ),
1764 : array( 'lhs' => 111, 'rhs' => 3 ),
1765 : array( 'lhs' => 111, 'rhs' => 3 ),
1766 : array( 'lhs' => 111, 'rhs' => 2 ),
1767 : array( 'lhs' => 111, 'rhs' => 3 ),
1768 : array( 'lhs' => 111, 'rhs' => 3 ),
1769 : array( 'lhs' => 111, 'rhs' => 2 ),
1770 : array( 'lhs' => 111, 'rhs' => 2 ),
1771 : array( 'lhs' => 111, 'rhs' => 2 ),
1772 : array( 'lhs' => 111, 'rhs' => 1 ),
1773 : array( 'lhs' => 77, 'rhs' => 2 ),
1774 : array( 'lhs' => 77, 'rhs' => 1 ),
1775 : array( 'lhs' => 112, 'rhs' => 1 ),
1776 : array( 'lhs' => 112, 'rhs' => 1 ),
1777 : );
1778 :
1779 : /**
1780 : * The following table contains a mapping of reduce action to method name
1781 : * that handles the reduction.
1782 : *
1783 : * If a rule is not set, it has no handler.
1784 : */
1785 : static public $yyReduceMap = array(
1786 : 0 => 0,
1787 : 46 => 0,
1788 : 55 => 0,
1789 : 57 => 0,
1790 : 59 => 0,
1791 : 60 => 0,
1792 : 61 => 0,
1793 : 77 => 0,
1794 : 146 => 0,
1795 : 1 => 1,
1796 : 43 => 1,
1797 : 49 => 1,
1798 : 52 => 1,
1799 : 53 => 1,
1800 : 91 => 1,
1801 : 114 => 1,
1802 : 153 => 1,
1803 : 162 => 1,
1804 : 164 => 1,
1805 : 165 => 1,
1806 : 166 => 1,
1807 : 2 => 2,
1808 : 81 => 2,
1809 : 152 => 2,
1810 : 160 => 2,
1811 : 163 => 2,
1812 : 3 => 3,
1813 : 4 => 4,
1814 : 5 => 5,
1815 : 6 => 6,
1816 : 7 => 7,
1817 : 8 => 8,
1818 : 9 => 9,
1819 : 10 => 10,
1820 : 11 => 11,
1821 : 12 => 12,
1822 : 13 => 13,
1823 : 14 => 14,
1824 : 15 => 15,
1825 : 16 => 15,
1826 : 17 => 15,
1827 : 18 => 18,
1828 : 19 => 18,
1829 : 20 => 20,
1830 : 21 => 21,
1831 : 22 => 22,
1832 : 23 => 23,
1833 : 24 => 24,
1834 : 25 => 25,
1835 : 26 => 26,
1836 : 27 => 27,
1837 : 34 => 27,
1838 : 106 => 27,
1839 : 151 => 27,
1840 : 28 => 28,
1841 : 29 => 29,
1842 : 30 => 30,
1843 : 31 => 31,
1844 : 32 => 32,
1845 : 33 => 33,
1846 : 35 => 35,
1847 : 36 => 36,
1848 : 37 => 36,
1849 : 38 => 38,
1850 : 39 => 39,
1851 : 40 => 40,
1852 : 41 => 41,
1853 : 42 => 42,
1854 : 44 => 44,
1855 : 45 => 45,
1856 : 47 => 47,
1857 : 56 => 47,
1858 : 48 => 48,
1859 : 50 => 50,
1860 : 51 => 50,
1861 : 54 => 54,
1862 : 58 => 58,
1863 : 62 => 62,
1864 : 63 => 63,
1865 : 64 => 64,
1866 : 66 => 64,
1867 : 65 => 65,
1868 : 67 => 67,
1869 : 68 => 68,
1870 : 69 => 69,
1871 : 70 => 70,
1872 : 71 => 71,
1873 : 72 => 72,
1874 : 73 => 73,
1875 : 74 => 74,
1876 : 75 => 75,
1877 : 76 => 76,
1878 : 78 => 78,
1879 : 79 => 79,
1880 : 80 => 80,
1881 : 82 => 82,
1882 : 111 => 82,
1883 : 83 => 83,
1884 : 84 => 84,
1885 : 85 => 85,
1886 : 86 => 86,
1887 : 89 => 86,
1888 : 87 => 87,
1889 : 88 => 88,
1890 : 90 => 90,
1891 : 92 => 92,
1892 : 93 => 93,
1893 : 94 => 94,
1894 : 116 => 94,
1895 : 95 => 95,
1896 : 96 => 96,
1897 : 97 => 97,
1898 : 98 => 98,
1899 : 99 => 99,
1900 : 100 => 100,
1901 : 101 => 101,
1902 : 102 => 102,
1903 : 103 => 103,
1904 : 104 => 104,
1905 : 105 => 105,
1906 : 107 => 107,
1907 : 108 => 108,
1908 : 109 => 109,
1909 : 110 => 110,
1910 : 112 => 112,
1911 : 113 => 113,
1912 : 115 => 115,
1913 : 117 => 117,
1914 : 118 => 118,
1915 : 121 => 118,
1916 : 132 => 118,
1917 : 119 => 119,
1918 : 120 => 120,
1919 : 122 => 122,
1920 : 123 => 123,
1921 : 124 => 124,
1922 : 129 => 124,
1923 : 125 => 125,
1924 : 128 => 125,
1925 : 126 => 126,
1926 : 131 => 126,
1927 : 127 => 127,
1928 : 130 => 127,
1929 : 133 => 133,
1930 : 134 => 134,
1931 : 135 => 135,
1932 : 136 => 136,
1933 : 137 => 137,
1934 : 138 => 138,
1935 : 139 => 139,
1936 : 140 => 140,
1937 : 141 => 141,
1938 : 142 => 142,
1939 : 143 => 143,
1940 : 144 => 144,
1941 : 145 => 145,
1942 : 147 => 147,
1943 : 148 => 148,
1944 : 149 => 149,
1945 : 150 => 150,
1946 : 154 => 154,
1947 : 155 => 155,
1948 : 156 => 156,
1949 : 157 => 157,
1950 : 158 => 158,
1951 : 159 => 159,
1952 : 161 => 161,
1953 : );
1954 : /* Beginning here are the reduction cases. A typical example
1955 : ** follows:
1956 : ** #line <lineno> <grammarfile>
1957 : ** function yy_r0($yymsp){ ... } // User supplied code
1958 : ** #line <lineno> <thisfile>
1959 : */
1960 : #line 79 "smarty_internal_templateparser.y"
1961 382 : function yy_r0(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
1962 : #line 1967 "smarty_internal_templateparser.php"
1963 : #line 85 "smarty_internal_templateparser.y"
1964 383 : function yy_r1(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
1965 : #line 1970 "smarty_internal_templateparser.php"
1966 : #line 87 "smarty_internal_templateparser.y"
1967 330 : function yy_r2(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
1968 : #line 1973 "smarty_internal_templateparser.php"
1969 : #line 93 "smarty_internal_templateparser.y"
1970 : function yy_r3(){
1971 278 : if ($this->compiler->has_code) {
1972 278 : $tmp =''; foreach ($this->compiler->prefix_code as $code) {$tmp.=$code;} $this->compiler->prefix_code=array();
1973 278 : $this->_retvalue = $this->cacher->processNocacheCode($tmp.$this->yystack[$this->yyidx + -1]->minor, $this->compiler,true);
1974 278 : } else { $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;} $this->compiler->has_variable_string = false; }
1975 : #line 1980 "smarty_internal_templateparser.php"
1976 : #line 99 "smarty_internal_templateparser.y"
1977 : function yy_r4(){
1978 159 : if ($this->compiler->has_code) {
1979 154 : $tmp =''; foreach ($this->compiler->prefix_code as $code) {$tmp.=$code;} $this->compiler->prefix_code=array();
1980 154 : $this->_retvalue = $this->cacher->processNocacheCode($tmp.$this->yystack[$this->yyidx + -1]->minor, $this->compiler,true);
1981 159 : } else { $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;} $this->compiler->has_variable_string = false; }
1982 : #line 1987 "smarty_internal_templateparser.php"
1983 : #line 105 "smarty_internal_templateparser.y"
1984 : function yy_r5(){
1985 229 : if ($this->compiler->has_code) {
1986 229 : $tmp =''; foreach ($this->compiler->prefix_code as $code) {$tmp.=$code;} $this->compiler->prefix_code=array();
1987 229 : $this->_retvalue = $this->cacher->processNocacheCode($tmp.$this->yystack[$this->yyidx + -1]->minor, $this->compiler,true);
1988 229 : } else { $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;} $this->compiler->has_variable_string = false; }
1989 : #line 1994 "smarty_internal_templateparser.php"
1990 : #line 111 "smarty_internal_templateparser.y"
1991 8 : function yy_r6(){ $this->_retvalue = ''; }
1992 : #line 1997 "smarty_internal_templateparser.php"
1993 : #line 113 "smarty_internal_templateparser.y"
1994 2 : function yy_r7(){ $this->_retvalue = $this->cacher->processNocacheCode($this->yystack[$this->yyidx + -1]->minor, $this->compiler,false); }
1995 : #line 2000 "smarty_internal_templateparser.php"
1996 : #line 115 "smarty_internal_templateparser.y"
1997 1 : function yy_r8(){$this->_retvalue = $this->cacher->processNocacheCode($this->smarty->left_delimiter, $this->compiler,false); }
1998 : #line 2003 "smarty_internal_templateparser.php"
1999 : #line 117 "smarty_internal_templateparser.y"
2000 1 : function yy_r9(){ $this->_retvalue = $this->cacher->processNocacheCode($this->smarty->right_delimiter, $this->compiler,false); }
2001 : #line 2006 "smarty_internal_templateparser.php"
2002 : #line 119 "smarty_internal_templateparser.y"
2003 4 : function yy_r10(){if ($this->sec_obj->php_handling == SMARTY_PHP_PASSTHRU) {
2004 1 : $this->_retvalue = $this->cacher->processNocacheCode("<?php echo htmlspecialchars('<?php".str_replace("'","\'",$this->yystack[$this->yyidx + -1]->minor)."?>', ENT_QUOTES);?>\n", $this->compiler, false);
2005 4 : } elseif ($this->sec_obj->php_handling == SMARTY_PHP_QUOTE) {
2006 1 : $this->_retvalue = $this->cacher->processNocacheCode(htmlspecialchars('<?php'.$this->yystack[$this->yyidx + -1]->minor.'?>', ENT_QUOTES), $this->compiler, false);
2007 3 : }elseif ($this->sec_obj->php_handling == SMARTY_PHP_ALLOW) {
2008 2 : $this->_retvalue = $this->cacher->processNocacheCode('<?php'.$this->yystack[$this->yyidx + -1]->minor.'?>', $this->compiler, true);
2009 2 : }elseif ($this->sec_obj->php_handling == SMARTY_PHP_REMOVE) {
2010 0 : $this->_retvalue = '';
2011 0 : }
2012 4 : }
2013 : #line 2018 "smarty_internal_templateparser.php"
2014 : #line 130 "smarty_internal_templateparser.y"
2015 : function yy_r11(){
2016 1 : if ($this->sec_obj->php_handling == SMARTY_PHP_PASSTHRU || $this->sec_obj->php_handling == SMARTY_PHP_ALLOW) {
2017 1 : $this->_retvalue = $this->cacher->processNocacheCode("<?php echo '<?=".$this->yystack[$this->yyidx + -1]->minor."?>'?>\n", $this->compiler, false);
2018 1 : } elseif ($this->sec_obj->php_handling == SMARTY_PHP_QUOTE) {
2019 0 : $this->_retvalue = $this->cacher->processNocacheCode(htmlspecialchars('<?='.$this->yystack[$this->yyidx + -1]->minor.'?>', ENT_QUOTES), $this->compiler, false);
2020 0 : }elseif ($this->sec_obj == SMARTY_PHP_REMOVE) {
2021 0 : $this->_retvalue = '';
2022 0 : }
2023 1 : }
2024 : #line 2029 "smarty_internal_templateparser.php"
2025 : #line 141 "smarty_internal_templateparser.y"
2026 3 : function yy_r12(){ $this->compiler->tag_nocache = true; $this->_retvalue = $this->cacher->processNocacheCode("<?php echo '<?xml';?>", $this->compiler, true); }
2027 : #line 2032 "smarty_internal_templateparser.php"
2028 : #line 142 "smarty_internal_templateparser.y"
2029 3 : function yy_r13(){$this->compiler->tag_nocache = true; $this->_retvalue = $this->cacher->processNocacheCode("<?php echo '?>';?>\n", $this->compiler, true); }
2030 : #line 2035 "smarty_internal_templateparser.php"
2031 : #line 145 "smarty_internal_templateparser.y"
2032 207 : function yy_r14(){$this->_retvalue = $this->cacher->processNocacheCode($this->yystack[$this->yyidx + 0]->minor, $this->compiler,false); }
2033 : #line 2038 "smarty_internal_templateparser.php"
2034 : #line 152 "smarty_internal_templateparser.y"
2035 229 : function yy_r15(){ $this->_retvalue = $this->compiler->compileTag('print_expression',array_merge(array('value'=>$this->yystack[$this->yyidx + -1]->minor),$this->yystack[$this->yyidx + 0]->minor)); }
2036 : #line 2041 "smarty_internal_templateparser.php"
2037 : #line 162 "smarty_internal_templateparser.y"
2038 73 : function yy_r18(){ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array('value'=>$this->yystack[$this->yyidx + -1]->minor),$this->yystack[$this->yyidx + -3]->minor,$this->yystack[$this->yyidx + 0]->minor)); }
2039 : #line 2044 "smarty_internal_templateparser.php"
2040 : #line 165 "smarty_internal_templateparser.y"
2041 211 : function yy_r20(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); }
2042 : #line 2047 "smarty_internal_templateparser.php"
2043 : #line 167 "smarty_internal_templateparser.y"
2044 2 : function yy_r21(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor),$this->yystack[$this->yyidx + 0]->minor)); }
2045 : #line 2050 "smarty_internal_templateparser.php"
2046 : #line 169 "smarty_internal_templateparser.y"
2047 1 : function yy_r22(){ $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,$this->yystack[$this->yyidx + 0]->minor).'<?php echo ';
2048 1 : if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -2]->minor[0],'modifier')) {
2049 1 : $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -2]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -1]->minor. "),".$this->yystack[$this->yyidx + -2]->minor[1].");?>";
2050 1 : } else {
2051 0 : if (is_callable($this->yystack[$this->yyidx + -2]->minor[0])) {
2052 0 : if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -2]->minor[0], $this->compiler)) {
2053 0 : $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -2]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -1]->minor. "),".$this->yystack[$this->yyidx + -2]->minor[1].");?>";
2054 0 : }
2055 0 : } else {
2056 0 : $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -2]->minor[0] . "\"");
2057 : }
2058 : }
2059 1 : }
2060 : #line 2065 "smarty_internal_templateparser.php"
2061 : #line 183 "smarty_internal_templateparser.y"
2062 81 : function yy_r23(){if (!in_array($this->yystack[$this->yyidx + -2]->minor,array('if','elseif','while'))) {
2063 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -2]->minor . "\"");
2064 0 : }
2065 81 : $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,array('if condition'=>$this->yystack[$this->yyidx + 0]->minor)); }
2066 : #line 2071 "smarty_internal_templateparser.php"
2067 : #line 187 "smarty_internal_templateparser.y"
2068 3 : function yy_r24(){ if (!in_array($this->yystack[$this->yyidx + -2]->minor,array('if','elseif','while'))) {
2069 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -2]->minor . "\"");
2070 0 : }
2071 3 : $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,array('if condition'=>$this->yystack[$this->yyidx + 0]->minor)); }
2072 : #line 2077 "smarty_internal_templateparser.php"
2073 : #line 192 "smarty_internal_templateparser.y"
2074 : function yy_r25(){
2075 7 : if ($this->yystack[$this->yyidx + -8]->minor != 'for') {
2076 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -8]->minor . "\"");
2077 0 : }
2078 7 : $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -8]->minor,array('start'=>$this->yystack[$this->yyidx + -6]->minor,'ifexp'=>$this->yystack[$this->yyidx + -4]->minor,'varloop'=>$this->yystack[$this->yyidx + -1]->minor,'loop'=>$this->yystack[$this->yyidx + 0]->minor)); }
2079 : #line 2084 "smarty_internal_templateparser.php"
2080 : #line 197 "smarty_internal_templateparser.y"
2081 1 : function yy_r26(){ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor; }
2082 : #line 2087 "smarty_internal_templateparser.php"
2083 : #line 198 "smarty_internal_templateparser.y"
2084 143 : function yy_r27(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
2085 : #line 2090 "smarty_internal_templateparser.php"
2086 : #line 200 "smarty_internal_templateparser.y"
2087 : function yy_r28(){
2088 17 : if ($this->yystack[$this->yyidx + -5]->minor != 'foreach') {
2089 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -5]->minor . "\"");
2090 0 : }
2091 17 : $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -5]->minor,array('from'=>$this->yystack[$this->yyidx + -3]->minor,'item'=>$this->yystack[$this->yyidx + 0]->minor)); }
2092 : #line 2097 "smarty_internal_templateparser.php"
2093 : #line 205 "smarty_internal_templateparser.y"
2094 : function yy_r29(){
2095 1 : if ($this->yystack[$this->yyidx + -5]->minor != 'foreach') {
2096 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -5]->minor . "\"");
2097 0 : }
2098 1 : $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -5]->minor,array('from'=>$this->yystack[$this->yyidx + -3]->minor,'item'=>$this->yystack[$this->yyidx + 0]->minor)); }
2099 : #line 2104 "smarty_internal_templateparser.php"
2100 : #line 212 "smarty_internal_templateparser.y"
2101 159 : function yy_r30(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',$this->yystack[$this->yyidx + 0]->minor); }
2102 : #line 2107 "smarty_internal_templateparser.php"
2103 : #line 213 "smarty_internal_templateparser.y"
2104 0 : function yy_r31(){ $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',$this->yystack[$this->yyidx + 0]->minor).'<?php echo ';
2105 0 : if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -2]->minor[0],'modifier')) {
2106 0 : $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -2]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -1]->minor. "),".$this->yystack[$this->yyidx + -2]->minor[1].");?>";
2107 0 : } else {
2108 0 : if (is_callable($this->yystack[$this->yyidx + -2]->minor[0])) {
2109 0 : if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -2]->minor[0], $this->compiler)) {
2110 0 : $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -2]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -1]->minor. "),".$this->yystack[$this->yyidx + -2]->minor[1].");?>";
2111 0 : }
2112 0 : } else {
2113 0 : $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -2]->minor[0] . "\"");
2114 : }
2115 : }
2116 0 : }
2117 : #line 2122 "smarty_internal_templateparser.php"
2118 : #line 227 "smarty_internal_templateparser.y"
2119 1 : function yy_r32(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',array('object_methode'=>$this->yystack[$this->yyidx + 0]->minor)); }
2120 : #line 2125 "smarty_internal_templateparser.php"
2121 : #line 234 "smarty_internal_templateparser.y"
2122 72 : function yy_r33(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); }
2123 : #line 2128 "smarty_internal_templateparser.php"
2124 : #line 238 "smarty_internal_templateparser.y"
2125 327 : function yy_r35(){ $this->_retvalue = array(); }
2126 : #line 2131 "smarty_internal_templateparser.php"
2127 : #line 241 "smarty_internal_templateparser.y"
2128 118 : function yy_r36(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor); }
2129 : #line 2134 "smarty_internal_templateparser.php"
2130 : #line 243 "smarty_internal_templateparser.y"
2131 0 : function yy_r38(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor=>'true'); }
2132 : #line 2137 "smarty_internal_templateparser.php"
2133 : #line 248 "smarty_internal_templateparser.y"
2134 7 : function yy_r39(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); }
2135 : #line 2140 "smarty_internal_templateparser.php"
2136 : #line 249 "smarty_internal_templateparser.y"
2137 1 : function yy_r40(){ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; }
2138 : #line 2143 "smarty_internal_templateparser.php"
2139 : #line 251 "smarty_internal_templateparser.y"
2140 10 : function yy_r41(){ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor); }
2141 : #line 2146 "smarty_internal_templateparser.php"
2142 : #line 257 "smarty_internal_templateparser.y"
2143 83 : function yy_r42(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
2144 : #line 2149 "smarty_internal_templateparser.php"
2145 : #line 260 "smarty_internal_templateparser.y"
2146 1 : function yy_r44(){$this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')'; }
2147 : #line 2152 "smarty_internal_templateparser.php"
2148 : #line 261 "smarty_internal_templateparser.y"
2149 : function yy_r45(){
2150 16 : if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -1]->minor[0],'modifier')) {
2151 8 : $this->_retvalue = "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -1]->minor[0] . "',array(". $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor. "),".$this->yystack[$this->yyidx + -1]->minor[1].")";
2152 8 : } else {
2153 9 : if (is_callable($this->yystack[$this->yyidx + -1]->minor[0])) {
2154 8 : if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -1]->minor[0], $this->compiler)) {
2155 7 : $this->_retvalue = "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -1]->minor[0] . "',array(". $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor. "),".$this->yystack[$this->yyidx + -1]->minor[1].")";
2156 7 : }
2157 7 : } else {
2158 1 : $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -1]->minor[0] . "\"");
2159 : }
2160 : }
2161 14 : }
2162 : #line 2167 "smarty_internal_templateparser.php"
2163 : #line 278 "smarty_internal_templateparser.y"
2164 2 : function yy_r47(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2165 : #line 2170 "smarty_internal_templateparser.php"
2166 : #line 280 "smarty_internal_templateparser.y"
2167 21 : function yy_r48(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + 0]->minor; }
2168 : #line 2173 "smarty_internal_templateparser.php"
2169 : #line 287 "smarty_internal_templateparser.y"
2170 17 : function yy_r50(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor; }
2171 : #line 2176 "smarty_internal_templateparser.php"
2172 : #line 301 "smarty_internal_templateparser.y"
2173 0 : function yy_r54(){$this->_retvalue = ' & '; }
2174 : #line 2179 "smarty_internal_templateparser.php"
2175 : #line 308 "smarty_internal_templateparser.y"
2176 0 : function yy_r58(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
2177 : #line 2182 "smarty_internal_templateparser.php"
2178 : #line 316 "smarty_internal_templateparser.y"
2179 2 : function yy_r62(){ $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
2180 : #line 2185 "smarty_internal_templateparser.php"
2181 : #line 318 "smarty_internal_templateparser.y"
2182 94 : function yy_r63(){ $this->_retvalue = "'".$this->yystack[$this->yyidx + -1]->minor."'"; }
2183 : #line 2188 "smarty_internal_templateparser.php"
2184 : #line 319 "smarty_internal_templateparser.y"
2185 2 : function yy_r64(){ $this->_retvalue = "''"; }
2186 : #line 2191 "smarty_internal_templateparser.php"
2187 : #line 321 "smarty_internal_templateparser.y"
2188 55 : function yy_r65(){ $this->_retvalue = '"'.$this->yystack[$this->yyidx + -1]->minor.'"'; }
2189 : #line 2194 "smarty_internal_templateparser.php"
2190 : #line 324 "smarty_internal_templateparser.y"
2191 1 : function yy_r67(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
2192 : #line 2197 "smarty_internal_templateparser.php"
2193 : #line 325 "smarty_internal_templateparser.y"
2194 2 : function yy_r68(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -3]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -6]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -1]->minor .')'; }
2195 : #line 2200 "smarty_internal_templateparser.php"
2196 : #line 327 "smarty_internal_templateparser.y"
2197 0 : function yy_r69(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.'::'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2198 : #line 2203 "smarty_internal_templateparser.php"
2199 : #line 328 "smarty_internal_templateparser.y"
2200 0 : function yy_r70(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -4]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -7]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -2]->minor .')'.$this->yystack[$this->yyidx + 0]->minor; }
2201 : #line 2206 "smarty_internal_templateparser.php"
2202 : #line 330 "smarty_internal_templateparser.y"
2203 1 : function yy_r71(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
2204 : #line 2209 "smarty_internal_templateparser.php"
2205 : #line 332 "smarty_internal_templateparser.y"
2206 1 : function yy_r72(){ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.'::$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2207 : #line 2212 "smarty_internal_templateparser.php"
2208 : #line 334 "smarty_internal_templateparser.y"
2209 0 : function yy_r73(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.'::$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2210 : #line 2215 "smarty_internal_templateparser.php"
2211 : #line 336 "smarty_internal_templateparser.y"
2212 1 : function yy_r74(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + -1]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '$_tmp'.$this->prefix_number; }
2213 : #line 2218 "smarty_internal_templateparser.php"
2214 : #line 345 "smarty_internal_templateparser.y"
2215 204 : function yy_r75(){if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('special_smarty_variable',$this->yystack[$this->yyidx + 0]->minor['index']);} else {
2216 204 : $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + 0]->minor['var'] .')->value'.$this->yystack[$this->yyidx + 0]->minor['index']; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor['var'],"'"))->nocache;} }
2217 : #line 2222 "smarty_internal_templateparser.php"
2218 : #line 348 "smarty_internal_templateparser.y"
2219 11 : function yy_r76(){ $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"))->nocache; }
2220 : #line 2225 "smarty_internal_templateparser.php"
2221 : #line 352 "smarty_internal_templateparser.y"
2222 12 : function yy_r78(){$this->_retvalue = '$_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -1]->minor .'\')'; }
2223 : #line 2228 "smarty_internal_templateparser.php"
2224 : #line 353 "smarty_internal_templateparser.y"
2225 0 : function yy_r79(){$this->_retvalue = '$_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -1]->minor .')'; }
2226 : #line 2231 "smarty_internal_templateparser.php"
2227 : #line 356 "smarty_internal_templateparser.y"
2228 208 : function yy_r80(){$this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'index'=>$this->yystack[$this->yyidx + 0]->minor); }
2229 : #line 2234 "smarty_internal_templateparser.php"
2230 : #line 364 "smarty_internal_templateparser.y"
2231 215 : function yy_r82(){return; }
2232 : #line 2237 "smarty_internal_templateparser.php"
2233 : #line 368 "smarty_internal_templateparser.y"
2234 11 : function yy_r83(){ $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']"; }
2235 : #line 2240 "smarty_internal_templateparser.php"
2236 : #line 369 "smarty_internal_templateparser.y"
2237 7 : function yy_r84(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]"; }
2238 : #line 2243 "smarty_internal_templateparser.php"
2239 : #line 370 "smarty_internal_templateparser.y"
2240 0 : function yy_r85(){ $this->_retvalue = "[".$this->yystack[$this->yyidx + 0]->minor."]"; }
2241 : #line 2246 "smarty_internal_templateparser.php"
2242 : #line 371 "smarty_internal_templateparser.y"
2243 24 : function yy_r86(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]"; }
2244 : #line 2249 "smarty_internal_templateparser.php"
2245 : #line 373 "smarty_internal_templateparser.y"
2246 5 : function yy_r87(){ $this->_retvalue = '['.$this->compiler->compileTag('special_smarty_variable','[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']'; }
2247 : #line 2252 "smarty_internal_templateparser.php"
2248 : #line 374 "smarty_internal_templateparser.y"
2249 0 : function yy_r88(){ $this->_retvalue = '['.$this->compiler->compileTag('special_smarty_variable','[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']'; }
2250 : #line 2255 "smarty_internal_templateparser.php"
2251 : #line 378 "smarty_internal_templateparser.y"
2252 3 : function yy_r90(){$this->_retvalue = ''; }
2253 : #line 2258 "smarty_internal_templateparser.php"
2254 : #line 386 "smarty_internal_templateparser.y"
2255 4 : function yy_r92(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
2256 : #line 2261 "smarty_internal_templateparser.php"
2257 : #line 388 "smarty_internal_templateparser.y"
2258 210 : function yy_r93(){$this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
2259 : #line 2264 "smarty_internal_templateparser.php"
2260 : #line 390 "smarty_internal_templateparser.y"
2261 9 : function yy_r94(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')'; }
2262 : #line 2267 "smarty_internal_templateparser.php"
2263 : #line 395 "smarty_internal_templateparser.y"
2264 3 : function yy_r95(){ if ($this->yystack[$this->yyidx + -1]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('internal_smarty_var',$this->yystack[$this->yyidx + -1]->minor['index']).$this->yystack[$this->yyidx + 0]->minor;} else {
2265 3 : $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -1]->minor['var'] .')->value'.$this->yystack[$this->yyidx + -1]->minor['index'].$this->yystack[$this->yyidx + 0]->minor; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -1]->minor['var'],"'"))->nocache;} }
2266 : #line 2271 "smarty_internal_templateparser.php"
2267 : #line 398 "smarty_internal_templateparser.y"
2268 3 : function yy_r96(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
2269 : #line 2274 "smarty_internal_templateparser.php"
2270 : #line 400 "smarty_internal_templateparser.y"
2271 0 : function yy_r97(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2272 : #line 2277 "smarty_internal_templateparser.php"
2273 : #line 402 "smarty_internal_templateparser.y"
2274 3 : function yy_r98(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2275 : #line 2280 "smarty_internal_templateparser.php"
2276 : #line 403 "smarty_internal_templateparser.y"
2277 0 : function yy_r99(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
2278 : #line 2283 "smarty_internal_templateparser.php"
2279 : #line 404 "smarty_internal_templateparser.y"
2280 0 : function yy_r100(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
2281 : #line 2286 "smarty_internal_templateparser.php"
2282 : #line 405 "smarty_internal_templateparser.y"
2283 0 : function yy_r101(){ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
2284 : #line 2289 "smarty_internal_templateparser.php"
2285 : #line 407 "smarty_internal_templateparser.y"
2286 0 : function yy_r102(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor; }
2287 : #line 2292 "smarty_internal_templateparser.php"
2288 : #line 413 "smarty_internal_templateparser.y"
2289 11 : function yy_r103(){if (!$this->template->security || $this->smarty->security_handler->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) {
2290 9 : if ($this->yystack[$this->yyidx + -3]->minor == 'isset' || $this->yystack[$this->yyidx + -3]->minor == 'empty' || $this->yystack[$this->yyidx + -3]->minor == 'array' || is_callable($this->yystack[$this->yyidx + -3]->minor)) {
2291 9 : $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")";
2292 9 : } else {
2293 0 : $this->compiler->trigger_template_error ("unknown function \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
2294 : }
2295 9 : } }
2296 : #line 2301 "smarty_internal_templateparser.php"
2297 : #line 424 "smarty_internal_templateparser.y"
2298 1 : function yy_r104(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
2299 : #line 2304 "smarty_internal_templateparser.php"
2300 : #line 428 "smarty_internal_templateparser.y"
2301 0 : function yy_r105(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.",".$this->yystack[$this->yyidx + 0]->minor; }
2302 : #line 2307 "smarty_internal_templateparser.php"
2303 : #line 432 "smarty_internal_templateparser.y"
2304 2 : function yy_r107(){ return; }
2305 : #line 2310 "smarty_internal_templateparser.php"
2306 : #line 437 "smarty_internal_templateparser.y"
2307 3 : function yy_r108(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor,'false'); }
2308 : #line 2313 "smarty_internal_templateparser.php"
2309 : #line 438 "smarty_internal_templateparser.y"
2310 14 : function yy_r109(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor,'true'); }
2311 : #line 2316 "smarty_internal_templateparser.php"
2312 : #line 450 "smarty_internal_templateparser.y"
2313 9 : function yy_r110(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2314 : #line 2319 "smarty_internal_templateparser.php"
2315 : #line 454 "smarty_internal_templateparser.y"
2316 8 : function yy_r112(){$this->_retvalue = ','.$this->yystack[$this->yyidx + 0]->minor; }
2317 : #line 2322 "smarty_internal_templateparser.php"
2318 : #line 455 "smarty_internal_templateparser.y"
2319 1 : function yy_r113(){$this->_retvalue = ',\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
2320 : #line 2325 "smarty_internal_templateparser.php"
2321 : #line 462 "smarty_internal_templateparser.y"
2322 2 : function yy_r115(){$this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; }
2323 : #line 2328 "smarty_internal_templateparser.php"
2324 : #line 467 "smarty_internal_templateparser.y"
2325 27 : function yy_r117(){$this->_retvalue =$this->yystack[$this->yyidx + 0]->minor; }
2326 : #line 2331 "smarty_internal_templateparser.php"
2327 : #line 469 "smarty_internal_templateparser.y"
2328 67 : function yy_r118(){$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2329 : #line 2334 "smarty_internal_templateparser.php"
2330 : #line 470 "smarty_internal_templateparser.y"
2331 0 : function yy_r119(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')'; }
2332 : #line 2337 "smarty_internal_templateparser.php"
2333 : #line 471 "smarty_internal_templateparser.y"
2334 0 : function yy_r120(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')'; }
2335 : #line 2340 "smarty_internal_templateparser.php"
2336 : #line 473 "smarty_internal_templateparser.y"
2337 1 : function yy_r122(){$this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2338 : #line 2343 "smarty_internal_templateparser.php"
2339 : #line 474 "smarty_internal_templateparser.y"
2340 1 : function yy_r123(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2341 : #line 2346 "smarty_internal_templateparser.php"
2342 : #line 475 "smarty_internal_templateparser.y"
2343 2 : function yy_r124(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
2344 : #line 2349 "smarty_internal_templateparser.php"
2345 : #line 476 "smarty_internal_templateparser.y"
2346 2 : function yy_r125(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
2347 : #line 2352 "smarty_internal_templateparser.php"
2348 : #line 477 "smarty_internal_templateparser.y"
2349 1 : function yy_r126(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2350 : #line 2355 "smarty_internal_templateparser.php"
2351 : #line 478 "smarty_internal_templateparser.y"
2352 3 : function yy_r127(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2353 : #line 2358 "smarty_internal_templateparser.php"
2354 : #line 484 "smarty_internal_templateparser.y"
2355 0 : function yy_r133(){$this->prefix_number++; $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'='.$this->yystack[$this->yyidx + 0]->minor.';?>'; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.'$_tmp'.$this->prefix_number; }
2356 : #line 2361 "smarty_internal_templateparser.php"
2357 : #line 486 "smarty_internal_templateparser.y"
2358 9 : function yy_r134(){$this->_retvalue = '=='; }
2359 : #line 2364 "smarty_internal_templateparser.php"
2360 : #line 487 "smarty_internal_templateparser.y"
2361 4 : function yy_r135(){$this->_retvalue = '!='; }
2362 : #line 2367 "smarty_internal_templateparser.php"
2363 : #line 488 "smarty_internal_templateparser.y"
2364 13 : function yy_r136(){$this->_retvalue = '>'; }
2365 : #line 2370 "smarty_internal_templateparser.php"
2366 : #line 489 "smarty_internal_templateparser.y"
2367 26 : function yy_r137(){$this->_retvalue = '<'; }
2368 : #line 2373 "smarty_internal_templateparser.php"
2369 : #line 490 "smarty_internal_templateparser.y"
2370 7 : function yy_r138(){$this->_retvalue = '>='; }
2371 : #line 2376 "smarty_internal_templateparser.php"
2372 : #line 491 "smarty_internal_templateparser.y"
2373 4 : function yy_r139(){$this->_retvalue = '<='; }
2374 : #line 2379 "smarty_internal_templateparser.php"
2375 : #line 492 "smarty_internal_templateparser.y"
2376 9 : function yy_r140(){$this->_retvalue = '==='; }
2377 : #line 2382 "smarty_internal_templateparser.php"
2378 : #line 493 "smarty_internal_templateparser.y"
2379 2 : function yy_r141(){$this->_retvalue = '!=='; }
2380 : #line 2385 "smarty_internal_templateparser.php"
2381 : #line 495 "smarty_internal_templateparser.y"
2382 5 : function yy_r142(){$this->_retvalue = '&&'; }
2383 : #line 2388 "smarty_internal_templateparser.php"
2384 : #line 496 "smarty_internal_templateparser.y"
2385 5 : function yy_r143(){$this->_retvalue = '||'; }
2386 : #line 2391 "smarty_internal_templateparser.php"
2387 : #line 497 "smarty_internal_templateparser.y"
2388 0 : function yy_r144(){$this->_retvalue = ' XOR '; }
2389 : #line 2394 "smarty_internal_templateparser.php"
2390 : #line 502 "smarty_internal_templateparser.y"
2391 38 : function yy_r145(){ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')'; }
2392 : #line 2397 "smarty_internal_templateparser.php"
2393 : #line 504 "smarty_internal_templateparser.y"
2394 38 : function yy_r147(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor; }
2395 : #line 2400 "smarty_internal_templateparser.php"
2396 : #line 505 "smarty_internal_templateparser.y"
2397 0 : function yy_r148(){ return; }
2398 : #line 2403 "smarty_internal_templateparser.php"
2399 : #line 506 "smarty_internal_templateparser.y"
2400 3 : function yy_r149(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor; }
2401 : #line 2406 "smarty_internal_templateparser.php"
2402 : #line 507 "smarty_internal_templateparser.y"
2403 1 : function yy_r150(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor; }
2404 : #line 2409 "smarty_internal_templateparser.php"
2405 : #line 516 "smarty_internal_templateparser.y"
2406 0 : function yy_r154(){$this->_retvalue = "`".$this->yystack[$this->yyidx + -1]->minor."`"; }
2407 : #line 2412 "smarty_internal_templateparser.php"
2408 : #line 517 "smarty_internal_templateparser.y"
2409 7 : function yy_r155(){$this->_retvalue = '".'.$this->yystack[$this->yyidx + -1]->minor.'."'; $this->compiler->has_variable_string = true; }
2410 : #line 2415 "smarty_internal_templateparser.php"
2411 : #line 518 "smarty_internal_templateparser.y"
2412 2 : function yy_r156(){$this->_retvalue = '".'.'$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + 0]->minor .'\')->value'.'."'; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor,"'"))->nocache; $this->compiler->has_variable_string = true; }
2413 : #line 2418 "smarty_internal_templateparser.php"
2414 : #line 519 "smarty_internal_templateparser.y"
2415 2 : function yy_r157(){ $this->_retvalue = '".('.$this->yystack[$this->yyidx + -1]->minor.')."'; $this->compiler->has_variable_string = true; }
2416 : #line 2421 "smarty_internal_templateparser.php"
2417 : #line 520 "smarty_internal_templateparser.y"
2418 2 : function yy_r158(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + -1]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '".$_tmp'.$this->prefix_number.'."'; $this->compiler->has_variable_string = true; }
2419 : #line 2424 "smarty_internal_templateparser.php"
2420 : #line 521 "smarty_internal_templateparser.y"
2421 0 : function yy_r159(){$this->_retvalue = '$'.$this->yystack[$this->yyidx + 0]->minor; }
2422 : #line 2427 "smarty_internal_templateparser.php"
2423 : #line 523 "smarty_internal_templateparser.y"
2424 0 : function yy_r161(){$this->_retvalue = '`'.$this->yystack[$this->yyidx + 0]->minor; }
2425 : #line 2430 "smarty_internal_templateparser.php"
2426 :
2427 : /**
2428 : * placeholder for the left hand side in a reduce operation.
2429 : *
2430 : * For a parser with a rule like this:
2431 : * <pre>
2432 : * rule(A) ::= B. { A = 1; }
2433 : * </pre>
2434 : *
2435 : * The parser will translate to something like:
2436 : *
2437 : * <code>
2438 : * function yy_r0(){$this->_retvalue = 1;}
2439 : * </code>
2440 : */
2441 : private $_retvalue;
2442 :
2443 : /**
2444 : * Perform a reduce action and the shift that must immediately
2445 : * follow the reduce.
2446 : *
2447 : * For a rule such as:
2448 : *
2449 : * <pre>
2450 : * A ::= B blah C. { dosomething(); }
2451 : * </pre>
2452 : *
2453 : * This function will first call the action, if any, ("dosomething();" in our
2454 : * example), and then it will pop three states from the stack,
2455 : * one for each entry on the right-hand side of the expression
2456 : * (B, blah, and C in our example rule), and then push the result of the action
2457 : * back on to the stack with the resulting state reduced to (as described in the .out
2458 : * file)
2459 : * @param int Number of the rule by which to reduce
2460 : */
2461 : function yy_reduce($yyruleno)
2462 : {
2463 : //int $yygoto; /* The next state */
2464 : //int $yyact; /* The next action */
2465 : //mixed $yygotominor; /* The LHS of the rule reduced */
2466 : //TP_yyStackEntry $yymsp; /* The top of the parser's stack */
2467 : //int $yysize; /* Amount to pop the stack */
2468 387 : $yymsp = $this->yystack[$this->yyidx];
2469 387 : if (self::$yyTraceFILE && $yyruleno >= 0
2470 387 : && $yyruleno < count(self::$yyRuleName)) {
2471 0 : fprintf(self::$yyTraceFILE, "%sReduce (%d) [%s].\n",
2472 0 : self::$yyTracePrompt, $yyruleno,
2473 0 : self::$yyRuleName[$yyruleno]);
2474 0 : }
2475 :
2476 387 : $this->_retvalue = $yy_lefthand_side = null;
2477 387 : if (array_key_exists($yyruleno, self::$yyReduceMap)) {
2478 : // call the action
2479 387 : $this->_retvalue = null;
2480 387 : $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
2481 387 : $yy_lefthand_side = $this->_retvalue;
2482 387 : }
2483 387 : $yygoto = self::$yyRuleInfo[$yyruleno]['lhs'];
2484 387 : $yysize = self::$yyRuleInfo[$yyruleno]['rhs'];
2485 387 : $this->yyidx -= $yysize;
2486 387 : for($i = $yysize; $i; $i--) {
2487 : // pop all of the right-hand side parameters
2488 383 : array_pop($this->yystack);
2489 383 : }
2490 387 : $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
2491 387 : if ($yyact < self::YYNSTATE) {
2492 : /* If we are not debugging and the reduce action popped at least
2493 : ** one element off the stack, then we can push the new element back
2494 : ** onto the stack here, and skip the stack overflow test in yy_shift().
2495 : ** That gives a significant speed improvement. */
2496 387 : if (!self::$yyTraceFILE && $yysize) {
2497 383 : $this->yyidx++;
2498 383 : $x = new TP_yyStackEntry;
2499 383 : $x->stateno = $yyact;
2500 383 : $x->major = $yygoto;
2501 383 : $x->minor = $yy_lefthand_side;
2502 383 : $this->yystack[$this->yyidx] = $x;
2503 383 : } else {
2504 333 : $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
2505 : }
2506 387 : } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
2507 375 : $this->yy_accept();
2508 375 : }
2509 387 : }
2510 :
2511 : /**
2512 : * The following code executes when the parse fails
2513 : *
2514 : * Code from %parse_fail is inserted here
2515 : */
2516 : function yy_parse_failed()
2517 : {
2518 0 : if (self::$yyTraceFILE) {
2519 0 : fprintf(self::$yyTraceFILE, "%sFail!\n", self::$yyTracePrompt);
2520 0 : }
2521 0 : while ($this->yyidx >= 0) {
2522 0 : $this->yy_pop_parser_stack();
2523 0 : }
2524 : /* Here code is inserted which will be executed whenever the
2525 : ** parser fails */
2526 0 : }
2527 :
2528 : /**
2529 : * The following code executes when a syntax error first occurs.
2530 : *
2531 : * %syntax_error code is inserted here
2532 : * @param int The major type of the error token
2533 : * @param mixed The minor type of the error token
2534 : */
2535 : function yy_syntax_error($yymajor, $TOKEN)
2536 : {
2537 : #line 60 "smarty_internal_templateparser.y"
2538 :
2539 1 : $this->internalError = true;
2540 1 : $this->yymajor = $yymajor;
2541 1 : $this->compiler->trigger_template_error();
2542 : #line 2548 "smarty_internal_templateparser.php"
2543 0 : }
2544 :
2545 : /**
2546 : * The following is executed when the parser accepts
2547 : *
2548 : * %parse_accept code is inserted here
2549 : */
2550 : function yy_accept()
2551 : {
2552 375 : if (self::$yyTraceFILE) {
2553 0 : fprintf(self::$yyTraceFILE, "%sAccept!\n", self::$yyTracePrompt);
2554 0 : }
2555 375 : while ($this->yyidx >= 0) {
2556 375 : $stack = $this->yy_pop_parser_stack();
2557 375 : }
2558 : /* Here code is inserted which will be executed whenever the
2559 : ** parser accepts */
2560 : #line 52 "smarty_internal_templateparser.y"
2561 :
2562 375 : $this->successful = !$this->internalError;
2563 375 : $this->internalError = false;
2564 375 : $this->retvalue = $this->_retvalue;
2565 : //echo $this->retvalue."\n\n";
2566 : #line 2573 "smarty_internal_templateparser.php"
2567 375 : }
2568 :
2569 : /**
2570 : * The main parser program.
2571 : *
2572 : * The first argument is the major token number. The second is
2573 : * the token value string as scanned from the input.
2574 : *
2575 : * @param int the token number
2576 : * @param mixed the token value
2577 : * @param mixed any extra arguments that should be passed to handlers
2578 : */
2579 : function doParse($yymajor, $yytokenvalue)
2580 : {
2581 : // $yyact; /* The parser action. */
2582 : // $yyendofinput; /* True if we are at the end of input */
2583 388 : $yyerrorhit = 0; /* True if yymajor has invoked an error */
2584 :
2585 : /* (re)initialize the parser, if necessary */
2586 388 : if ($this->yyidx === null || $this->yyidx < 0) {
2587 : /* if ($yymajor == 0) return; // not sure why this was here... */
2588 388 : $this->yyidx = 0;
2589 388 : $this->yyerrcnt = -1;
2590 388 : $x = new TP_yyStackEntry;
2591 388 : $x->stateno = 0;
2592 388 : $x->major = 0;
2593 388 : $this->yystack = array();
2594 388 : array_push($this->yystack, $x);
2595 388 : }
2596 388 : $yyendofinput = ($yymajor==0);
2597 :
2598 388 : if (self::$yyTraceFILE) {
2599 0 : fprintf(self::$yyTraceFILE, "%sInput %s\n",
2600 0 : self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
2601 0 : }
2602 :
2603 : do {
2604 388 : $yyact = $this->yy_find_shift_action($yymajor);
2605 388 : if ($yymajor < self::YYERRORSYMBOL &&
2606 388 : !$this->yy_is_expected_token($yymajor)) {
2607 : // force a syntax error
2608 0 : $yyact = self::YY_ERROR_ACTION;
2609 0 : }
2610 388 : if ($yyact < self::YYNSTATE) {
2611 388 : $this->yy_shift($yyact, $yymajor, $yytokenvalue);
2612 388 : $this->yyerrcnt--;
2613 388 : if ($yyendofinput && $this->yyidx >= 0) {
2614 0 : $yymajor = 0;
2615 0 : } else {
2616 388 : $yymajor = self::YYNOCODE;
2617 : }
2618 388 : } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
2619 387 : $this->yy_reduce($yyact - self::YYNSTATE);
2620 388 : } elseif ($yyact == self::YY_ERROR_ACTION) {
2621 1 : if (self::$yyTraceFILE) {
2622 0 : fprintf(self::$yyTraceFILE, "%sSyntax Error!\n",
2623 0 : self::$yyTracePrompt);
2624 0 : }
2625 1 : if (self::YYERRORSYMBOL) {
2626 : /* A syntax error has occurred.
2627 : ** The response to an error depends upon whether or not the
2628 : ** grammar defines an error token "ERROR".
2629 : **
2630 : ** This is what we do if the grammar does define ERROR:
2631 : **
2632 : ** * Call the %syntax_error function.
2633 : **
2634 : ** * Begin popping the stack until we enter a state where
2635 : ** it is legal to shift the error symbol, then shift
2636 : ** the error symbol.
2637 : **
2638 : ** * Set the error count to three.
2639 : **
2640 : ** * Begin accepting and shifting new tokens. No new error
2641 : ** processing will occur until three tokens have been
2642 : ** shifted successfully.
2643 : **
2644 : */
2645 1 : if ($this->yyerrcnt < 0) {
2646 1 : $this->yy_syntax_error($yymajor, $yytokenvalue);
2647 0 : }
2648 0 : $yymx = $this->yystack[$this->yyidx]->major;
2649 0 : if ($yymx == self::YYERRORSYMBOL || $yyerrorhit ){
2650 0 : if (self::$yyTraceFILE) {
2651 0 : fprintf(self::$yyTraceFILE, "%sDiscard input token %s\n",
2652 0 : self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
2653 0 : }
2654 0 : $this->yy_destructor($yymajor, $yytokenvalue);
2655 0 : $yymajor = self::YYNOCODE;
2656 0 : } else {
2657 0 : while ($this->yyidx >= 0 &&
2658 0 : $yymx != self::YYERRORSYMBOL &&
2659 0 : ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
2660 0 : ){
2661 0 : $this->yy_pop_parser_stack();
2662 0 : }
2663 0 : if ($this->yyidx < 0 || $yymajor==0) {
2664 0 : $this->yy_destructor($yymajor, $yytokenvalue);
2665 0 : $this->yy_parse_failed();
2666 0 : $yymajor = self::YYNOCODE;
2667 0 : } elseif ($yymx != self::YYERRORSYMBOL) {
2668 0 : $u2 = 0;
2669 0 : $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
2670 0 : }
2671 : }
2672 0 : $this->yyerrcnt = 3;
2673 0 : $yyerrorhit = 1;
2674 0 : } else {
2675 : /* YYERRORSYMBOL is not defined */
2676 : /* This is what we do if the grammar does not define ERROR:
2677 : **
2678 : ** * Report an error message, and throw away the input token.
2679 : **
2680 : ** * If the input token is $, then fail the parse.
2681 : **
2682 : ** As before, subsequent error messages are suppressed until
2683 : ** three input tokens have been successfully shifted.
2684 : */
2685 0 : if ($this->yyerrcnt <= 0) {
2686 0 : $this->yy_syntax_error($yymajor, $yytokenvalue);
2687 0 : }
2688 0 : $this->yyerrcnt = 3;
2689 0 : $this->yy_destructor($yymajor, $yytokenvalue);
2690 0 : if ($yyendofinput) {
2691 0 : $this->yy_parse_failed();
2692 0 : }
2693 0 : $yymajor = self::YYNOCODE;
2694 : }
2695 0 : } else {
2696 0 : $this->yy_accept();
2697 0 : $yymajor = self::YYNOCODE;
2698 : }
2699 388 : } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
2700 388 : }
2701 : }
|